小编spe*_*try的帖子

为什么GetProperties列出受保护的属性(在通用基类中声明)两次?

当我声明以下简单类时:

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的其他受保护属性.

.net c# reflection

10
推荐指数
1
解决办法
634
查看次数

标签 统计

.net ×1

c# ×1

reflection ×1