System.Object []错误无法转换

时间:2011-02-24 23:56:22

标签: c# type-conversion

我不确定在任何帮助中发生了什么。我正在传递给字符串和字符串[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}

2 个答案:

答案 0 :(得分:2)

当你致电CultureInfo.InvariantCulture时,你正在传递一个额外的论点 - CallMember。这意味着您的parms数组实际上会变成这样:

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

因此,当您调用methodInfo.Invoke时,如果该方法可能需要object[]和{{1},则会传递CultureInfostring作为参数}。

答案 1 :(得分:1)

CallMember是否有重载方法?

我问的原因是你将五个参数传递给CallMember,但是你显示的CallMember方法只接受四个参数。

我的猜测是CallMember有一个重载方法,你传入的对象数组就是字符串参数。