C# 无法转换System.Object[]错误

C# 无法转换System.Object[]错误,c#,type-conversion,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);

我不知道发生了什么事,谢谢你的帮助。我正在传递字符串和字符串[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}

CallMember是否有重载方法

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


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

调用
CallMember
时,您正在传递一个额外的参数--
CultureInfo.InvariantCulture
。这意味着您的
parms
数组实际上是这样的:

new object[] { new object[] { name, parameters }, CultureInfo.InvariantCulture }
因此,当您随后调用
methodInfo.Invoke
时,您将传递一个
对象[]
和一个
CultureInfo
作为参数,而该方法可能需要一个
string
和一个
string[]