过滤掉Type.GetMethods()返回的自动生成的方法(getter/setter/add/remove/.etc)

Dan*_*an7 16 c# reflection events properties getmethod

Type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)用来检索给定类型的方法数组.

问题是返回的MethodInfo可能包括由我不想要的编译器生成的方法.例如:

  • 财产bool Enabled { get; }将获得bool get_Enabled()

  • 事件SomethingChanged会得到 add_SomethingChanged(EventHandler)remove_SomethingChanged(EventHandler)

我可以添加一些过滤器逻辑来摆脱它们,这可能会变得非常复杂.我想知道是否还有其他我可以做的事情,例如BindingFlags设置,只检索用户定义的方法?

Yur*_*ich 26

typeof(MyType)
    .GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)
    .Where(m => !m.IsSpecialName)
Run Code Online (Sandbox Code Playgroud)