过滤掉自动生成的方法(的getter / setter /添加/删除/ .etc)由Type.GetMethods()返回 [英] Filtering out auto-generated methods (getter/setter/add/remove/.etc) returned by Type.GetMethods()

查看:220
本文介绍了过滤掉自动生成的方法(的getter / setter /添加/删除/ .etc)由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 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)

这篇关于过滤掉自动生成的方法(的getter / setter /添加/删除/ .etc)由Type.GetMethods()返回的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆