通过类的反射属性获取,但不是从继承的类获取

时间:2011-09-29 10:45:58

标签: c# reflection

class Parent {
   public string A { get; set; }
}

class Child : Parent {
   public string B { get; set; }
}

我只需要获得属性B,没有属性A.  但

Child.GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance)

返回两个属性:/

4 个答案:

答案 0 :(得分:130)

您应该在标志中添加 BindingFlags.DeclaredOnly ,例如:

typeof(Child).GetProperties(System.Reflection.BindingFlags.Public
    | System.Reflection.BindingFlags.Instance
    | System.Reflection.BindingFlags.DeclaredOnly)

答案 1 :(得分:7)

尝试使用DeclaredOnly绑定标志。它应该将返回的属性限制为仅在您感兴趣的类上声明的属性。 这是一个代码示例:

PropertyInfo[] properties = typeof(Child).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.DeclaredOnly);

答案 2 :(得分:4)

添加BindingFlags.DeclaredOnly

答案 3 :(得分:3)

来自 Type.cs :在这种情况下使用DeclaredOnlyLookup

  private const BindingFlags DefaultLookup = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public;
  internal const BindingFlags DeclaredOnlyLookup = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly;