且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

过滤掉自动生成的方法(的getter / setter /添加/删除/ .etc)由Type.GetMethods()返回

更新时间:2023-12-05 23:37:58

  typeof运算(的MyType)
.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic可)
。凡(M = GT;!m.IsSpecialName)


I use Type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic) to retrieve an array of methods for a given type.

The problem is the returned MethodInfo could include methods that are generated by the compiler which I don't want. For example:

  • property bool Enabled { get; } will get bool get_Enabled()

  • event SomethingChanged will get add_SomethingChanged(EventHandler) and remove_SomethingChanged(EventHandler)

I can probably add some filter logic to get rid of them which could potentially get very complicated. I want to know if there is something else I can do, such as with BindingFlags settings, to retrieve only user defined methods?

typeof(MyType)
    .GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)
    .Where(m => !m.IsSpecialName)