繁体   English   中英

MethodInfo.Invoke引发可变数量的参数异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM