Когда я объявляю следующие простые классы:
class Class1<T>
{
protected virtual T Prop1 { get; set; }
protected virtual string Prop2 { get; set; }
}
class Class2 : Class1<string>
{
protected override string Prop1 { get; set; }
protected override string Prop2 { get; set; }
}
и теперь я использую Reflection для получения свойств Class2 следующим образом:
var hProperties = typeof(Class2).GetProperties(BindingFlags.NonPublic | BindingFlags.Instance);
тогда Prop2 будет указан один раз, пока Prop1 будет указан дважды! Такое поведение кажется мне странным. Не следует ли считать Prop1 и Prop2 одинаковыми?
Что я могу сделать, чтобы иметь Prop1 только один раз в hProperties? Я не хочу использовать BindingFlags.DeclaredOnly, так как я также хочу, чтобы другие защищенные свойства Class1 не были переопределены.