如何在Type.GetMethods中排除"属性方法"?

Pac*_*ier 5 .net c# vb.net reflection .net-4.0

我能够使用类来获取类的方法System.Type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly).

但是,返回的列表将包含"属性方法",例如get_PropertyXset_PropertyX.

我们如何确保返回的列表不包含"属性方法"?

Str*_*ior 12

var methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
.Where(m => !m.IsSpecialName);
Run Code Online (Sandbox Code Playgroud)

  • @Srinivas:首先,它没有返回数组,所以这是错误的。其次,我不会进入var-vs-Type辩论,因为它纯粹是主观的。大多数看这行代码的C#程序员都会知道,“方法”是他们可以迭代的东西,通常这就是我们关心的全部。 (2认同)
  • 在这里看到这个链接... http://blogs.msdn.com/b/ericlippert/archive/2011/04/20/uses-and-misuses-of-implicit-typing.aspx (2认同)