MethodInfo.Invoke 与 Type.InvokeMember?

Posted

技术标签:

【中文标题】MethodInfo.Invoke 与 Type.InvokeMember?【英文标题】:MethodInfo.Invoke vs Type.InvokeMember? 【发布时间】:2016-04-15 20:43:04 【问题描述】:

MethodInfo.Invoke()Type.InvokeMember() 方法有什么区别?

在哪些场景下应该使用哪个?

调用方法的首选方式是什么?

【问题讨论】:

【参考方案1】:

我想两者应该是相同的,只要调用一个方法或构造函数是一致的,但是如果你想获取/设置一个字段/属性,必须使用 InvokeMember。

查看此处的链接了解更多详情。

见MethodBase.Invoke Example

见Type.InvokeMember Example

【讨论】:

【参考方案2】:

根据您的使用方式,MethodInfo.Invoke 可能会更快。当您在后台调用Type.InvokeMember 时,将检索并调用MethodInfo。检索MethodInfo 的成本很高。如果您多次调用同一个方法,请将MethodInfo 保存在一个变量中,并在保存时间的情况下从该变量中调用它。

【讨论】:

以上是关于MethodInfo.Invoke 与 Type.InvokeMember?的主要内容,如果未能解决你的问题,请参考以下文章

为任何方法创建 Func 或 Action(在 c# 中使用反射)

Python type 与 __bases__

C ++函数定义中的“Type&”与“Type *”[重复]

OAuth2.0/OIDC 中的 grant_type 与 response_type

reifiable type与raw type

type="text/ecmascript" 与 type="text/javascript"