过滤掉自动生成的方法(的getter / setter /添加/删除/ .etc)由Type.GetMethods()返回 [英] Filtering out auto-generated methods (getter/setter/add/remove/.etc) returned by Type.GetMethods()
问题描述
我用 Type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic可)
来检索给定类型的方法数组。
问题是返回的MethodInfo
可能包括由我不想编译器生成的方法。例如:
-
属性
bool的启用{搞定; }
将
GET布尔get_Enabled()
-
事件
SomethingChanged
将得到
add_SomethingChanged(事件处理程序)
和
remove_SomethingChanged(事件处理程序)
我也许可以添加一些过滤器逻辑来摆脱它们可能潜在地变得非常复杂。我想知道,如果有别的东西我可以做,如的BindingFlags
设置,只提取用户定义的方法?
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 getbool get_Enabled()
event
SomethingChanged
will getadd_SomethingChanged(EventHandler)
andremove_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)
这篇关于过滤掉自动生成的方法(的getter / setter /添加/删除/ .etc)由Type.GetMethods()返回的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!