我需要调用带有2个普通参数的反射的void方法和作为参考参数的第三个参数。我看过很多关于这个问题的帖子,并建议使用GetMethod函数而不是InvokeMember。我尝试过InvokeMember并且它有效,有人可以解释我为什么?
Class1 myreferenceparam = new Class1();
myobject.InvokeMember("MyMethod", BindingFlags.InvokeMethod | BindingFlags.Default, null, myobject, new object[] { myparam1, myparam2, myreferenceparam });
Response.Write(myreferenceparam.myfield);
方法MyMethod编辑Class1的字段myfield。我的代码是正确的还是我应该使用GetMethod?
答案 0 :(得分:0)
GetMethod将为您提供方法元数据(MethodInfo),可用于探索方法并采取适当的操作。例如,如果方法不存在或找不到,则将MethodInfo设置为null,并且可以在方法上调用InvokeMemeber之前处理此方法。
InvokeMember顾名思义只会调用参数中指定的方法。如果找不到方法,它将抛出“MissingMethodException”,因此您将丢失GetMethod提供的验证位。