Атрибут Obsolete (руководство по программированию на C#)
Обновлен: Ноябрь 2007
Атрибутом Obsolete отмечается нерекомендуемая для использования сущность программы. Каждый случай использования сущности, отмеченной устаревшей, будет приводить к генерированию предупреждения или ошибки в зависимости от настроек этого атрибута. Например:
[System.Obsolete("use class B")]
class A
{
public void Method() { }
}
class B
{
[System.Obsolete("use NewMethod", true)]
public void OldMethod() { }
public void NewMethod() { }
}
В этом примере атрибут Obsolete применяется к классу A и к методу B.OldMethod. Так как второй аргумент конструктора атрибута, примененный к методу B.OldMethod, имеет значение true, то использование этого метода будет приводить к ошибке компилятора, а использование класса A будет приводить только к генерированию предупреждения. Вызов метода B.NewMethod, однако, не будет приводить к генерированию предупреждения или ошибки.
Строка, передаваемая конструктору атрибута в качестве первого аргумента, будет отображаться как часть предупреждения или ошибки. Например, при использовании с предыдущими определениями следующий код генерирует два предупреждения и одну ошибку:
// Generates 2 warnings:
A a = new A();
// Generate no errors or warnings:
B b = new B();
b.NewMethod();
// Generates an error, terminating compilation:
b.OldMethod();
Для класса A генерируется два предупреждения: одно из-за объявления ссылки на класс и второе из-за конструктора класса.
Атрибут Obsolete может использоваться без аргументов, но рекомендуется включать пояснение, почему соответствующий элемент является устаревшим и что следует использовать взамен.
Атрибут Obsolete является атрибутом одноразового использования и может быть применен к любой сущности, допускающей использование атрибутов. Слово Obsolete является псевдонимом класса ObsoleteAttribute.
См. также
Основные понятия
Руководство по программированию в C#
Ссылки
Отражение (Руководство по программированию на C#)
Атрибуты (Руководство по программированию на C#)
Устранение неоднозначностей в целевых объектах атрибутов (Руководство по программированию на C#)
Создание настраиваемых атрибутов (руководство по программированию в C#)
Доступ к атрибутам через отражение (Руководство по программированию в C#)