C# 无法转换System.Object[]错误
我不知道发生了什么事,谢谢你的帮助。我正在传递字符串和字符串[3]下面的代码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);
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[]