问题所在
这可能是一个非常简单的问题,但它让我困惑了一段时间: InvokeMember可以接受表示传递给该方法所需参数的object[]。我有两个对象(list of obj,string foo)。我可以成功地将任何一个变量传递给该方法,但是当我尝试同时传递这两个变量时,我得到了一个方法'x‘NotFound异常。
详细信息
调用该方法:
classtype.InvokeMember(someMethodName,
BindingFlags.Public | BindingFlags.InvokeMethod|BindingFlags.Static,
null,
null,
new object[]{ someListOfObjects, stringValue});接收方式:
public static string TestMethod(object foo)
{
return "foo";
}注意:当传递new object[]{someListOfObjects}或new object[]{stringValue}时,我会如期到达目的地方法,但是当我尝试同时传递这两个方法时,它无法找到该方法。我在TestMethod上的传入参数是否正确?
当我将TestMethod更改为接受object[]时,永远找不到该方法。
发布于 2013-04-09 01:31:56
您传入了一个具有两个元素的数组,因此它将该数组视为参数数组,查找具有两个参数的方法。您希望得到一个长度为1的数组,其唯一元素是一个对象,该对象恰好也是一个长度为2的数组。
选项:
object,以便它成为构建包装数组的编译器参数数组(object)新的object[] { someListOfObjects,stringValue }
新的object[] {新的object[] { someListOfObjects,stringValue }}
TestMethod参数以匹配阵列:公共静态字符串TestMethod(List foo,string bar)
https://stackoverflow.com/questions/15885314
复制相似问题