Как пометить метод как устаревший или устаревший? - PullRequest
904 голосов
/ 19 ноября 2009

Как пометить метод как устаревший или устаревший с помощью C #?

Ответы [ 4 ]

1450 голосов
/ 19 ноября 2009

Самый короткий путь - добавление ObsoleteAttribute в качестве атрибута к методу . Обязательно включите соответствующее объяснение:

[Obsolete("Method1 is deprecated, please use Method2 instead.")]
public void Method1()
{ … }

Вы также можете вызвать сбой компиляции, трактуя использование метода как ошибку вместо предупреждения , если метод вызывается откуда-то из кода, подобного этому:

[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]
105 голосов
/ 07 октября 2016

Отметить как устаревшее с предупреждением:

[Obsolete]
private static void SomeMethod()

При его использовании вы получаете предупреждение:

Obsolete warning is shown

И с IntelliSense:

Obsolete warning with IntelliSense

Если вы хотите сообщение:

[Obsolete("My message")]
private static void SomeMethod()

Вот подсказка IntelliSense:

IntelliSense shows the obsolete message

Наконец, если вы хотите, чтобы использование было помечено как ошибка:

[Obsolete("My message", true)]
private static void SomeMethod()

При использовании это то, что вы получаете:

Method usage is displayed as an error

Примечание. Используйте это сообщение, чтобы сообщить людям, что им следует использовать, а не почему оно устарело.

62 голосов
/ 19 ноября 2009

Добавьте аннотацию к методу, используя ключевое слово Obsolete. Аргумент сообщения является необязательным, но хорошая идея сообщить, почему элемент сейчас устарел и / или что использовать вместо него.
Пример:

[System.Obsolete("use myMethodB instead")]
void myMethodA()
27 голосов
/ 18 июня 2018

С помощью ObsoleteAttribute вы можете показать устаревший метод. Устаревший атрибут имеет три конструктора:

  1. [Obsolete]: не является конструктором параметров и по умолчанию использует этот атрибут.
  2. [Obsolete(string message)]: в этом формате вы можете получить message того, почему этот метод устарел.
  3. [Obsolete(string message, bool error)]: в этом формате сообщение очень явное, но error означает, что во время компиляции компилятор должен показывать ошибку и вызывать сбой при компиляции или нет.

enter image description here

...