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

代码如下: 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;
总会显示“参数个数不匹配” 求解

跃然一笑
浏览 541回答 1
1回答

潇湘沐

这个问题很明显啊,你调用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);参数在外部传入。
打开App,查看更多内容
随时随地看视频慕课网APP