通过Reflection C#排除getter和setter以及生成的成员

时间:2015-04-17 11:09:22

标签: c#-4.0 system.reflection

我正在迭代类

的方法
  

System.Data.Entity.DbContext

像这样:

var methods = t.GetMethods(BindingFlags.Public | BindingFlags.Instance);

现在,方法数组中的第一个方法是

  

get_Database

返回

类型的对象
  

System.Data.Entity.Database

如您所见,我只使用bindingflag实例和public请求方法。 如果我看看VS中的DbContext类,我找不到方法

  

get_Database

它来自哪里?

1 个答案:

答案 0 :(得分:0)

!m.IsSpecialName

在这里很重要。

你必须应用过滤器来排除这些,我的情况我也想排除私人成员。

var methods = t.GetMethods(BindingFlags.Public |
                           BindingFlags.NonPublic | 
                           BindingFlags.Instance |
                           BindingFlags.Static)
.Where(m => !m.IsSpecialName && m.IsPrivate == false).ToList();