[英]MethodInfo.Invoke throws exception for variable number of arguments
我的代码尝试使用MethodInfo.Invoke调用具有可变数量参数的多个方法,但该调用引发ArgumentException
。 是什么原因造成的,我该如何解决?
被调用方法的方法签名如下所示:
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)
)时,一切正常。
params实际上是编译器的一种解决方法。 在后面,参数的实际类型是数组。 因此,当您执行以下操作时: method.Invoke(obj, new object[] { "01" })
不能正常工作。 您需要这样做:
method.Invoke(obj, new object[] { new string[] {"01"} })
那应该工作。
在这里查看此答案。 它检查是否存在ParamArrayAttribute
并将值作为数组传递。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.