2016-06-14 5 views
-1

리플렉션을 사용하여이 메서드를 호출하려면 어떻게해야합니까?리플렉션을 사용하여 메서드를 호출하는 방법

using System.Reflection 

public static string NotSoObvius<V>(V show) where V : class 
    { 
     return string.Format("This is it", show); 
    } 
+0

우리는 방법은 구성원으로 속해있는 클래스 또는 구조체를 볼 수 없습니다. 그러나 그렇지 않으면'var res = (string) typeof (Xxx) .GetMethod ("NotSoObvius")와 같은 것입니다. MakeGenericMethod (show.GetType()). Invoke (null, new [] {show,})'괜찮습니다. –

+0

고맙다.하지만 조금 이해하지 못했다. – Muro

답변

-1

이 같은 것을 시도해야한다 :에서

Type myType = Type.GetType("MyClass"); 
MethodInfo notSoObviusInfo = myType.GetMethod("NotSoObvius"); 
Type[] types = new Type[]{typeof(YourDesiredTypeHere)}; 
notSoObviusInfo = notSoObviusInfo.MakeGenericMethod(types); 
string myReturn = (string)notSoObviusInfo.Invoke(null, new[]{new YourDesiredTypeHere()}); 

: https://msdn.microsoft.com/pt-br/library/a89hcwhh(v=vs.110).aspx

+0

하지만 'V'는 실제 유형이 아니고 메소드에 대한 유형 인수였다. 그래서'V'는 위의 범위에 속하지 않습니다. 그리고'MakeGenericType'을 사용하여 타입 인자가 무엇인지 지정하고 싶습니다 (질문에 대한 나의 코멘트를보십시오). 그리고'정적'메소드는 "this"타겟 (당신의'magicClassObject')을 필요로하지 않습니다. 그래서 당신의 대답은 몇 가지 문제가 있습니다. –

+0

맞아. 방금 MSDN 튜토리얼에 따라 답변을 수정했습니다. https://msdn.microsoft.com/pt-br/library/a89hcwhh(v=vs.110).aspx "생성자가 정적 인 경우이 인수는 null이거나 생성자를 정의하는 클래스의 인스턴스입니다. " –

+1

답변이 업데이트되었으며 이제는 모두 작동합니다! –

관련 문제