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 に答える