2011-10-12 6 views
0

C#에서 .NET 리플렉션을 사용하여 두 개의 매개 변수 (부울 및 문자열)를 사용하는 함수를 호출하려고합니다. 그러나, 다음 코드 나 예외 얻을 : (". 어레이와 호환 형식으로 된 요소에 액세스하려고") 이것이 ArrayTypeMismatchException을 발생C#에서 리플렉션을 사용하여 다른 유형의 인수로 메소드를 호출하는 방법

object[] paramList = new object[] { true, "Foo" }; 

Type wsType = typeof(MyWS); 
MyWS inst = (MyWS)Activator.CreateInstance(wsType); 
MethodInfo method = wsType.GetMethod(function); // function = the name of the function to be called 
method.Invoke(inst, paramList); 

한다.

paramList가 예외를 일으키는 것 같지만 왜 그럴까요?

뭔가처럼 될 것입니다 전화를 시도하고있다 기능 : 당신이 무엇을하고 있는지에 아무 잘못이있는 것은 보이지 않는다

public bool EnableSchedule(bool enable, string password) 
{ 
    ... 
} 
+0

확인과 같은 getMethod 메소드()에 일부 바인딩 플래그를 추가하려고합니다. 그 외에는 코드가 작동해야합니다. – Groo

+2

배열은 다른 유형의 요소, 특히 객체 배열을 포함 할 수 있습니다. 더 나은 질문을 문서화하고, 호출하려는 유형 및 메소드와 예외 스택 추적을 표시하십시오. –

+0

"function"의 정의 (또는 적어도 선언)를 제공하지 않으면, 잘못되어 가고있는 것을 파악하기위한 손. 매개 변수의 순서가 잘못 되었습니까? 함수가 (string, bool) 함수가 아닌 (bool, string) 함수를받을 수 있습니까? –

답변

0

- 문제가 "MyWS"에있다하지 않는 한. 나는 그 수업이 공개 된 것으로 가정한다. 는 한편,`function` 변수가 정말이 두 개의 매개 변수를 받아들이는 함수의 이름을 포함

wsType.GetMethod(function, BindingFlags.Static | BindingFlags.Public | BindingFlags.Instance); 
+0

네가 맞아, 내 다른 수업에 오류가 있음이 드러났어! – William

관련 문제