2011-02-17 4 views
0

(위임 방법, [] args를 개체)는 I호출의 문제점 파라미터 카운트

System.Reflection.TargetParameterCountException 같은 exeption 얻었다. System.Windows.Forms.Control.MarshaledInvoke에서

([] args를 개체, 위임 방법)에 System.Windows.Forms.Control.Invoke (컨트롤 호출자 위임 방법, [] args를 부울 동기 개체)

그러나 System.Windows.Forms.Control에는 Invoke (Delegate 메서드, Object [] args) 메서드 만 Invoke (Delegate 메서드, params Object [] args) 메서드 만 포함됩니다. 그리고

호출 (새 SetXDelegate (SetX), 값 1, 값 2)

내 문제의 이유는 내가 새로운 (

호출을 사용해야처럼 사용 SetXDelegate (SetX), 새 개체 [] {값 1, 값 2})? 더 나은 같은 것을 사용하는 경우 UPDATE가

추천하십시오

호출 ((MethodInvoker) 대의원 { SetX (값 1, 값);})

이런 종류의 문제를 피하려면

을 사용하십시오.

감사합니다.

+1

SetXDelegate는 어떤 모습입니까? –

+0

SetX가 인스턴스 메소드 인 경우 배열의 첫 번째 객체가 호출의 'this'이어야합니다. 매개 변수가 2 개이면 args에 3 개의 값을 전달해야합니다. –

답변

2

예. It takes an array of objects

편집

문제는 SetXDelegate는 두 개의 매개 변수를 고려하지 않습니다 수 있습니다.

+3

예, 매개 변수 배열로 사용하므로 두 호출이 동일해야합니다. 나는 SetXDelegate가 두 개의 매개 변수를 취하지 않을 가능성이 훨씬 더 높다고 생각하지만 아직 말할 수는 없다. ( –

+0

MSDN 문서에 "params"라는 서명이 명확하게 표시되어있다. - 질문에서도이 점을 언급했다. –

+1

[MSDN 예제] (http://msdn.microsoft.com/en-us/library/w5zay9db.aspx)는 'params'인수를 전달할 수있는 여러 가지 방법을 보여줍니다. –

2

실제로 저는 SetX에 잘못된 매개 변수 개수를 전달하고 있다고 불평하고 있다고 생각합니다. SetX는 어떤 매개 변수를 취합니까?