不工作属性。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
的文档,你会看到它的AttributeUsage
将Inherited
设置为false -因此该属性不会被重写成员继承。
我怀疑如果你检查它是否覆盖了一个基本属性,并沿着继承链往上走,你将能够发现这个属性。不可否认,做这种事情有点乱。