不起作用Attribute.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; }
}
输出:错误
为什么?
答案 0 :(得分:4)
如果您查看ObsoleteAttribute
的文档,您会看到其AttributeUsage
将Inherited
设置为false - 因此该属性不会被覆盖成员继承。
我怀疑如果你检查它是否覆盖了一个基本属性并继续沿着继承链运行,那么你将能够以这种方式发现属性。诚然,做这种事情有点乱。