c# - 使用反射调用具有引用参数的方法

标签 c# reflection

我需要调用一个带有反射的 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?

最佳答案

GetMethod 将为您提供方法元数据 (MethodInfo),可用于探索方法并采取适当的操作。例如,如果方法不存在或找不到,您将获得 MethodInfo 为 null,您可以在对该方法调用 InvokeMemeber 之前处理它。

InvokeMember 顾名思义将只调用参数中指定的方法。如果未找到方法,它将抛出“MissingMethodException”,因此您将丢失 GetMethod 提供的验证位。

关于c# - 使用反射调用具有引用参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3404041/

相关文章:

c# - Windows Phone 中的导航源

c# - 如何使用 lambda 表达式作为参数通过反射调用方法?

C#如何使用字符串插值设置固定字段宽度?

c# - 使用 .NET 的单个命令将 SQL INSERT 和 SELECT 插入 Oracle

c# - 了解对象中的属性类型 C#

reflection - 是否可以在 Smalltalk 中扩展单个对象

c# - 使用反射执行审计

.net - 如何通过 C# 中的反射调用采用 'method group' 即的方法。操作<>或功能<>

c# - 如何测试 IActionResult 及其内容

.net - 如何使用FastMember获取成员(member)的属性数据