使用反射检查方法是否为"扩展方法"

Dro*_*per 16 c# reflection extension-methods methodinfo

作为我的应用程序的一部分,我有一个接收MethodInfo的函数,需要对它进行特定的操作,这取决于该方法是否为"扩展方法".

我检查了MethodInfo类,我找不到任何显示该方法是扩展名的IsExtension属性或标志.

有谁知道如何从方法的MethodInfo中找到它?

Sea*_*ean 22

您可以通过检查ExtensionAttribute是否应用于方法来调用MethodInfo实例上的IsDefined方法来查找它:

bool isExtension=someMethod.IsDefined(typeof(ExtensionAttribute),true);
Run Code Online (Sandbox Code Playgroud)


Bri*_*ian 18

基于

C#中的F#扩展方法

似乎编译表单上有一个属性.那么看看该方法是否具有此属性:

http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.extensionattribute.aspx