Ответ 1
Вы должны добавить к своим флагам BindingFlags.DeclaredOnly, т.е.
typeof(Child).GetProperties(System.Reflection.BindingFlags.Public
| System.Reflection.BindingFlags.Instance
| System.Reflection.BindingFlags.DeclaredOnly)
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)
вернуть оба свойства:/
Вы должны добавить к своим флагам BindingFlags.DeclaredOnly, т.е.
typeof(Child).GetProperties(System.Reflection.BindingFlags.Public
| System.Reflection.BindingFlags.Instance
| System.Reflection.BindingFlags.DeclaredOnly)
Попробуйте использовать флаг привязки DeclaredOnly. Он должен ограничивать возвращаемые свойства только теми, которые были объявлены в интересующем вас классе. И вот пример кода:
PropertyInfo[] properties = typeof(Child).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.DeclaredOnly);
Добавить BindingFlags.DeclaredOnly
От 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;