代码之家  ›  专栏  ›  技术社区  ›  Dror Helper

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

  •  16
  • Dror Helper  · 技术社区  · 17 年前

    作为我的应用程序的一部分,我有一个函数,它接收MethodInfo,并需要根据该方法是否为“扩展方法”对其执行特定操作。

    IsExtension 属性或标志,表明该方法是扩展。

    5 回复  |  直到 17 年前
        1
  •  24
  •   Sean    17 年前

    你可以打电话给 定义 方法,通过检查 扩展属性 适用于以下方法:

    bool isExtension=someMethod.IsDefined(typeof(ExtensionAttribute),true);
    
        2
  •  19
  •   Community Mohan Dere    9 年前

    基于

    F# extension methods in C#

    似乎编译后的表单上有一个属性。因此,请查看该方法是否具有此属性:

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

        3
  •  3
  •   Community Mohan Dere    9 年前

    这看起来非常类似于早期的 question ,可能值得一看。这里的建议是使用 ExtensionAttribute 听起来像是你想要的。

        4
  •  1
  •   Samuel    17 年前

    MethodInfo 通过一个实例,您可以轻松地检查该方法是否是静态的。扩展方法只是一种语法糖,可以转换为在实例中传递的静态方法调用。

        5
  •  0
  •   Amy B    17 年前

    编译器不是在编译时将所有扩展方法切换为静态方法调用吗?

    myList.First();
    

    变成

    Enumerable.First(myList);