ObsoleteAttribute混淆

时间:2009-03-11 16:25:27

标签: c# properties attributes obsolete

  

可能重复:
  Why are C# collection-properties not flagged as obsolete when calling properties on them?

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

var o = new Old();抛出错误。 错误CS0246:找不到类型或命名空间名称'var'(您是否缺少using指令或程序集引用?) 如果我们将其更改为Old o = new Old(); 仍然第二行抛出错误就像 错误CS0619:'Program.Old.Geezer'已过时:'有些错误' 。 我什么时候去这里.. !!!!!!!!!!