为了账号安全,请及时绑定邮箱和手机立即绑定

如下所示,关于C# invoke方法的参数个数不匹配的问题,求解决方法?

如下所示,关于C# invoke方法的参数个数不匹配的问题,求解决方法?

C# C
跃然一笑 2021-11-19 15:11:57
代码如下: 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);
参数在外部传入。

查看完整回答
反对 回复 2021-11-23
  • 1 回答
  • 0 关注
  • 537 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信