3

可能重复:
为什么在 C# 集合属性上调用属性时没有将其标记为过时?

我想将 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; } }
    }
}
4

1 回答 1

1

我相信这是最新的 C# 编译器 (C# 3.0) 中的一个已知错误。StackOverflow 上还有一个与此问题相关的问题。

于 2009-03-11T16:28:03.220 回答