使用PropertyDescriptor可以确定当前类中是否覆盖了属性

时间:2014-08-20 22:47:43

标签: c# reflection system.reflection

如果我有:

class A
{
    public virtual string Owner { get; set; }
}

class B : A
{
    public override string Owner { get; set; }
}

如何使用B方法确定类TypeDescriptor.GetProperties(type)上的所有者属性是覆盖属性?

1 个答案:

答案 0 :(得分:2)

根据@ DaveShaw的评论和使用propertyInfo的类似问题的答案:

var property = TypeDescriptor.GetProperties(typeof(B)).Find("Owner", false).ComponentType.GetProperty("Owner");
var getMethod = property.GetGetMethod(false);
bool isOverride = getMethod.GetBaseDefinition() != getMethod;