我想将 ObsoleteAttribute 应用于属性,但似乎编译器仅针对属性的直接使用生成警告/错误,任何间接使用都会被默默忽略。
我认为下面的例子很好地说明了这个问题:
using System;
class Program
{
static void Main(string[] args)
{
var o = new Old();
Console.WriteLine(o.Geezer); // compilation fails: 'ObsoleteAttributeTest.Program.Old.Geezer' is obsolete: 'Some error'
Console.WriteLine(o.Geezer.Attributes); // compiles OK
}
class Old
{
[ObsoleteAttribute("Some error", true)]
public System.Xml.XmlElement Geezer { get { return null; } }
}
}