C# Invoke为变量数量的参数引发异常

C# Invoke为变量数量的参数引发异常,c#,reflection,C#,Reflection,我的代码试图使用MethodInfo.Invoke调用具有可变参数数的多个方法,但调用会引发ArgumentException。这是什么原因造成的?我如何修复它 正在调用的方法的方法签名如下所示: private static string MethodBeingCalled(params string[] args) { //do stuff return stringToReturn; } string valueReturned = method.Invoke(obj,

我的代码试图使用MethodInfo.Invoke调用具有可变参数数的多个方法,但调用会引发
ArgumentException
。这是什么原因造成的?我如何修复它

正在调用的方法的方法签名如下所示:

private static string MethodBeingCalled(params string[] args) 
{
    //do stuff
    return stringToReturn;
}
string valueReturned = method.Invoke(obj, new object[] { "01" }).ToString();
调用这些方法的代码行如下所示:

private static string MethodBeingCalled(params string[] args) 
{
    //do stuff
    return stringToReturn;
}
string valueReturned = method.Invoke(obj, new object[] { "01" }).ToString();
此行引发ArgumentException:

Object of type 'System.String' cannot be converted to type 'System.String[]'.

当我更改MethodBeingCalled以获取固定的参数列表(即:
MethodBeingCalled(string arg)
)时,一切正常。

参数实际上是编译器的一种变通方法。在后面,参数的实际类型是数组。因此,当您执行此操作时:
method.Invoke(obj,newobject[]{“01”})
,它无法工作。您需要这样做:

method.Invoke(obj, new object[] { new string[] {"01"} })
这应该行得通。

看看这个答案。它检查是否存在
ParamArrayAttribute
并将值作为数组传递