我不确定在任何帮助中发生了什么。我正在传递给字符串和字符串[3]下面的代码。
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}
答案 0 :(得分:2)
当你致电CultureInfo.InvariantCulture
时,你正在传递一个额外的论点 - CallMember
。这意味着您的parms
数组实际上会变成这样:
new object[] { new object[] { name, parameters }, CultureInfo.InvariantCulture }
因此,当您调用methodInfo.Invoke
时,如果该方法可能需要object[]
和{{1},则会传递CultureInfo
和string
作为参数}。
答案 1 :(得分:1)
CallMember是否有重载方法?
我问的原因是你将五个参数传递给CallMember,但是你显示的CallMember方法只接受四个参数。
我的猜测是CallMember有一个重载方法,你传入的对象数组就是字符串参数。