Путаница в атрибуте ObsoleteAttribute

Возможный дубликат:
Почему свойства-коллекции 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; } }
    }
}

person dolzenko    schedule 11.03.2009    source источник
comment
Прикомандированный; Ссылка MS: connect.microsoft.com/VisualStudio/feedback/   -  person Marc Gravell    schedule 11.03.2009
comment
3 минуты, это впечатляет, спасибо, ребята! Извините за отправку дубликата: /   -  person dolzenko    schedule 11.03.2009
comment
Официальный ответ: stackoverflow.com/questions/577132/   -  person Marc Gravell    schedule 17.03.2009


Ответы (1)


Я считаю, что это известная ошибка в последней версии компилятора C # (C # 3.0). Еще один вопрос по StackOverflow относящиеся к этой проблеме.

person Community    schedule 11.03.2009