2011-08-25 2 views
2

실패 성공하지 못했습니다. 왜?가져 오기 방법 나는 다음과 같은 방법 <em>미군 병사</em>으로 delared 한

이라는 키워드입니까?

+0

.NET 4를 사용하고 있습니까? 그렇다면 동적 키워드를 사용하여 반사 된 객체를 만든 다음 직접 메소드를 호출 할 수 있습니다. 그렇게하면 MethodInfo 조회가 필요하지 않습니다. 단점은, 만약 당신이 잘못 생각하면, 당신은 런타임 예외가 발생합니다 – ghostJago

답변

7

를 사용 typeof(Int32).MakeByRefType() 두 번째 매개 변수. 즉 :

MethodInfo mGetMethod = typeof(Gl).GetMethod("Get", bindingFlags.Public|BindingFlags.Static, null, new Type[] { typeof(Int32), typeof(Int32).MakeByRefType() }, null); 
+0

그것은 효과가 있지만 메서드 호출에 그것을 처리하는 방법? – Luca

+0

발견 : http://stackoverflow.com/questions/2438065/c-reflection-how-can-i-invoke-a-method-with-an-out-parameter – Luca

0

어떻게 대신 같은 것을 시도에 대해 :

MethodInfo method = this.GetType().GetMethod("Get"); 
if (method != null) 
{ 
    method.Invoke(this, new object[] { "Arg1", "Arg2", "Arg3" }); 
} 
1

당신이 방법에 대한 구체적인 과부하를 지정해야하는 경우 다음 확실히 @Isaac Overacker는 말과 함께 할 것입니다. 그렇지 않으면 매개 변수를 지정하지 마십시오.

MethodInfo mGetMethod = typeof(Gl).GetMethod("Get", BindingFlags.Public | BindingFlags.Static); 
1

out 키워드는 매개 변수를 참조로 전달합니다. 이는 아마도 문제 일 수 있습니다. C#에서는 byValue 및 byReference 매개 변수로 메소드를 오버로드 할 수 있으므로 참조 유형으로 플래그를 지정해야합니다.