Filtering out auto-generated methods (getter/setter/add/remove/.etc) returned by Type.GetMethods()
c#, events, getmethod, properties, reflection
Solution
typeof(MyType)
.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)
.Where(m => !m.IsSpecialName)
Problem
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?