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