代码如下: public object ExecuteSense(string senseMethod){object result = null;Console.WriteLine(this.GetType());System.Reflection.MethodInfo methodInfo = this.GetType().GetMethod(senseMethod);//获取具体的函数方法if (methodInfo is System.Reflection.MethodInfo && methodInfo.IsPublic)result = methodInfo.Invoke(this, new object[] { });//在此会弹射出 异常 return result;总会显示“参数个数不匹配” 求解
1 回答
潇湘沐
TA贡献1816条经验 获得超6个赞
这个问题很明显啊,你调用methodInfo.Invoke 方法的时候没有传递参数进去,参数不匹配,当然报错了。在使用反射机制动态调用方法时,你先要知道此方法需要什么参数,参数的类型,参数的个数等等。比方说我有一个方法:publc void TestMethod(int a, int b); 那么你调用的时候就要这样写:
int a = ...;
int b = ...;
methodInfo.Invoke(this, new object[] { a, b });
所以你这个ExecuteSense 方法的签名应该改为:
public object ExecuteSense(string senseMethod, obejct[] args);
参数在外部传入。
- 1 回答
- 0 关注
- 689 浏览
添加回答
举报
0/150
提交
取消