C# Invoke为变量数量的参数引发异常
我的代码试图使用MethodInfo.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,
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
并将值作为数组传递