Атрибут 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#)

Attribute

System.Reflection