如何获取覆盖属性的属性



不工作属性。GetCustomAttribute:

using System;
class Program
{
    static void Main()
    {
        var p = typeof(MyClass2).GetProperty("Value");
        var a = Attribute.GetCustomAttribute(p, typeof(ObsoleteAttribute), true);
        Console.WriteLine(a != null);
    }
}
public class MyClass
{
    [Obsolete]
    public virtual string Value { get; set; }
}
public class MyClass2 : MyClass
{
    public override string Value { get; set; }
}

输出:假

为什么?

如果你查看ObsoleteAttribute的文档,你会看到它的AttributeUsageInherited设置为false -因此该属性不会被重写成员继承。

我怀疑如果你检查它是否覆盖了一个基本属性,并沿着继承链往上走,你将能够发现这个属性。不可否认,做这种事情有点乱。

相关内容

  • 没有找到相关文章