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

标签 c# events reflection properties getmethod

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

问题是返回的 MethodInfo 可能包含编译器生成的方法,而我不想要这些方法。例如:

  • property bool Enabled { get; 将 得到 bool get_Enabled()

  • 事件 SomethingChanged 会得到 add_SomethingChanged(事件处理程序)remove_SomethingChanged(事件处理程序)

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

最佳答案

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

关于c# - 过滤掉 Type.GetMethods() 返回的自动生成的方法(getter/setter/add/remove/.etc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3661539/

相关文章:

java - 从 Java 中的通用静态方法获取类名

java - 使用反射(不是 JAXB)将 XML 转换为现有的 Java Bean

reflection - D 有反射吗?

mysql - 如何检查事件调度程序状态mysql

c# - 是否有 ClaimTypes 属性来表示 "city"?

C#:如何为 Double.Parse(string num) 显式设置区域性

c# - 将米转换为十进制

java - 事件和处理程序,Java 中的 EventBus

javascript - 在包含图像的 Div 上设置 EventListener 不触发功能

c# - 如何通过 Style setter 设置可为空的属性值?