2012-01-03 4 views
0

기본 유형의 모든 메소드 이름을 나열하고 싶습니다. # 리플렉션을 사용하여 기본 유형의 메소드 이름을 얻으십시오.

나는
var methods = this.GetType().UnderlyingSystemType.GetMethods(); 

을 시도했지만 작동하지 않습니다.

편집

public class BaseClass 
{ 
    public BaseClass() 
    { 
     var methods = this.GetType().UnderlyingSystemType.GetMethods(); 
    } 
} 

public class Class1:BaseClass 
{ 
    public void Method1() 
    {} 

    public void Method2() 
    {} 
} 

내가 방법 항목 및 방법 2

+1

기본 유형은 무엇입니까? 무엇이 반환 되나요? 더 많은 정보가 필요합니다 – user1231231412

+3

근원 유형은 무엇입니까? 그리고 어떻게됩니까? "효과가 없다"는 절대로 좋은 설명이 아닙니다. http://tinyurl.com/so-hints를 읽고 자세한 내용으로 질문을 업데이트하십시오. –

+0

질문 업데이트 – user49126

답변

1

이 작품을 제공하는 코드 같은 것을 시도 컬렉션에 필요한

추가 예.

System.Exception test = new Exception(); 
var methods = test.GetType().UnderlyingSystemType.GetMethods(); 

foreach (var t in methods) 
{ 
    Console.WriteLine(t.Name); 
} 

반환

get_Message 
get_Data 
GetBaseException 
get_InnerException 
get_TargetSite 
get_StackTrace 
get_HelpLink 
set_HelpLink 
get_Source 
set_Source 
ToString 
GetObjectData 
GetType 
Equals 
GetHashCode 
GetType 

편집 :

당신이 원하는 무엇인가요?

Class1 class1 = new Class1(); 
var methodsClass1 = class1.GetType().GetMethods(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); 

BaseClass baseClass = new BaseClass(); 
var methodsBaseClass = baseClass.GetType().GetMethods(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); 

foreach (var t in methodsClass1.Where(z => methodsBaseClass.FirstOrDefault(y => y.Name == z.Name) == null)) 
{ 
    Console.WriteLine(t.Name); 
} 
1

MethodInfo[] methodInfos = 
typeof(MyClass).GetMethods(BindingFlags.Public | 
                 BindingFlags.Static); 
+0

나는이 호출을 baseclass contructor에서 만들어야합니다. –

0
here is an example on how to use reflection to get the Method names 
replace MyObject with your Object/Class 

using System.Reflection; 
MyObject myObject;//The name of the Object 
foreach(MethodInfo method in myObject.GetType().GetMethods()) 
{ 
    Console.WriteLine(method.ToString()); 
} 
0

문제는 당신이 BaseClass로의 생성자에서 호출 GetType을의 재정에있다.

Class1 유형의 인스턴스를 만들고 사용중인 메소드를 보면 6 가지 방법이 모두 표시됩니다.

BaseClass 유형의 인스턴스를 만드는 경우 Object 유형의 4 가지 메소드 만 볼 수 있습니다.

하위 클래스의 인스턴스를 생성하면 BaseClass에서 생성자를 암시 적으로 호출하게됩니다. GetType()을 사용할 때 예상되는 응답을 반환하는 Class1 형식의 재정의 된 가상 메서드를 사용합니다.

관련 문제