当我声明以下简单类时:
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; }
}
Run Code Online (Sandbox Code Playgroud)
现在我使用Reflection来获取Class2的属性,如下所示:
var hProperties = typeof(Class2).GetProperties(BindingFlags.NonPublic | BindingFlags.Instance);
Run Code Online (Sandbox Code Playgroud)
然后Prop2将列出一次,而Prop1将列出两次!这种行为对我来说似乎很奇怪.Prop1和Prop2不应该被视为相同吗?
如何在hProperties中只使用Prop1一次?我不想使用BindingFlags.DeclaredOnly,因为我还想获得未被覆盖的Class1的其他受保护属性.