【发布时间】:2013-10-11 20:05:45
【问题描述】:
我正在尝试使用一些可选参数根据其名称调用方法:
var methodInfo = this.GetType().GetMethod("Foo",
BindingFlags.NonPublic | BindingFlags.Instance);
var queryString = _httpContext.Request.QueryString;
var somethingElse = new List<int>(){ 1,2,3 };
var args = new object[]{ queryString, somethingElse };
if(methodInfo != null)
methodInfo.Invoke(this, args);
private void Foo(object[] args)
{
foreach(var item in args)
//...
}
如果我只将queryString 传递给args,我会收到以下错误:
“System.Web.HttpValueCollection”类型的对象无法转换为“System.Object[]”类型。
methodInfo.Invoke() 中的 object[] parameters 参数打算如何使用?
【问题讨论】:
-
if(methodInfo == null) methodInfo.Invoke(this, args);此代码将永远无法工作... -
哪一行抛出了这个错误?
-
@Knaģis
!=,抱歉写在我头上 -
我发现它在计算参数之前尝试“调用”该方法非常有趣,我不知道:) 我以为你会得到类似
WrongNumberOfArgumentException的东西。 (正如@Knaģis 和@Alessandro 都指出的那样,您误解了如何将多个参数传递给调用方法。)