Подтвердить что ты не робот

Получить свойства отражения класса, но не от унаследованного класса

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)

вернуть оба свойства:/

4b9b3361

Ответ 1

Вы должны добавить к своим флагам BindingFlags.DeclaredOnly, т.е.

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

Ответ 2

Попробуйте использовать флаг привязки DeclaredOnly. Он должен ограничивать возвращаемые свойства только теми, которые были объявлены в интересующем вас классе. И вот пример кода:

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

Ответ 3

Добавить BindingFlags.DeclaredOnly

Ответ 4

От 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;