2011-02-24 6 views
0

어떤 도움을 받았는지 잘 모르겠습니다. 문자열과 문자열 [3] 아래의 코드로 전달합니다.System.Object [] 오류를 변환 할 수 없습니다.

public void SetSwitch(string name, string[] parameters) 
{ 
    _memberFactory.CallMember(3, "SetSwitch", new[] { typeof(string), typeof(string[]) }, new object[] { name, parameters }, CultureInfo.InvariantCulture); 
} 

CallMember(int memberCode, string memberName, Type[] parameterTypes, params object[] parms) 
    { 
    object result = methodInfo.Invoke(GetLateBoundObject, parms); 
    } 

내가지고있어하면이 오류 ...

{ "개체 유형 '으로 System.Object []를'선택 System.String을 '형식으로 변환 할 수 없습니다."} System.Exception입니다 {System.ArgumentException}

답변

2

CallMember을 호출 할 때 추가 인수 - CultureInfo.InvariantCulture -을 전달합니다. 그런 다음 호출 할 때 방법은 아마도 stringstring[]을 기대하는 경우

new object[] { new object[] { name, parameters }, CultureInfo.InvariantCulture } 

그래서 methodInfo.Invoke 당신이 인수로서 object[]CultureInfo을 전달하는 : 이것은 당신의 parms 배열을 효과적으로 이런 일이되고 있다는 것을 의미한다.

+0

네, 그게 전부입니다. 감사 –

1

CallMember에 대한 오버로드 방법이 있습니까?

내가 묻는 이유는 CallMember에 5 개의 인수를 전달하지만 4 개의 인수 만 허용하는 CallMember 메서드입니다.

내 생각 엔 CallMember에 대한 오버로드 메서드가 있으며 전달할 개체 배열이 문자열 인수로 들어갑니다.

+0

과부하가 없으며 나를 바로 간과합니다. –

관련 문제