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# 中使用反射)
C ++函数定义中的“Type&”与“Type *”[重复]