2009-03-11 3 views
3

Можно создать дубликат:
Why are C# collection-properties not flagged as obsolete when calling properties on them?ObsoleteAttribute путаница

Я хотел бы применить 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; } } 
    } 
} 
+0

Прикованный; MS link: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=417159 –

+0

3 минуты, теперь это впечатляет, спасибо вам, ребята! Просим прокомментировать:/ – dolzenko

+0

Официальный ответ: http://stackoverflow.com/questions/577132/why-are-c-collection-properties-not-flagged-as-obsolete-when-calling-properties/652824#652824 –

ответ

1

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

0

var o = new Old(); выдает ошибку. ошибка CS0246: имя типа или пространства имен «var» не удалось найти (вы не указали директиву использования или ссылку на сборку?) Если мы изменим это как Old o = new Old(); все еще вторая строка вызывает ошибку, например ошибка CS0619: 'Program.Old.Geezer' устарел: 'Некоторая ошибка' . Я получаю Whats going here .. !!!!!!!!!!

+0

Я должен был сказать, что я использую последнюю версию компилятора C#. Вы используете 2.0 или даже что-то старше, проверьте это сообщение (также связанное выше, кстати) http://stackoverflow.com/questions/577132/why-are-c-collection-properties-not-flagged-as-obsolete -когда-колл-свойства/577152 # 577152 – dolzenko