Как пометить метод как устаревший или устаревший с помощью C #?
Как отметить метод как устаревший или устаревший?
Ответы (4)
Самый короткий способ - добавить ObsoleteAttribute
как атрибут метода. Обязательно включите соответствующее объяснение:
[Obsolete("Method1 is deprecated, please use Method2 instead.")]
public void Method1()
{ … }
Вы также можете вызвать сбой компиляции, рассматривая использование метода как ошибку вместо предупреждения, если метод вызывается откуда-то из кода, например:
[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]
Obsolete
позволяет постепенно удалять метод, класс и т. Д. Через несколько выпусков, если хотите: предупреждение, ошибка, исчезновение. Я думаю, это лучше для потребляющего кода / кодировщика, чем просто удаление рассматриваемого элемента.
- person SteveCinq; 01.08.2018
[Obsolete("Method1 is deprecated, please use " + nameof(Method2) + " instead.")]
, чтобы избежать жестко запрограммированных строк, в случае, если имя метода должно измениться по какой-либо причине.
- person Mladen B.; 25.01.2019
Чтобы пометить как устаревшее с предупреждением:
[Obsolete]
private static void SomeMethod()
Когда вы его используете, вы получаете предупреждение:
А с IntelliSense:
Если вы хотите сообщение:
[Obsolete("My message")]
private static void SomeMethod()
Вот подсказка IntelliSense:
Наконец, если вы хотите, чтобы использование было отмечено как ошибка:
[Obsolete("My message", true)]
private static void SomeMethod()
При использовании вы получаете:
Примечание. Используйте сообщение, чтобы сообщить людям, что им следует использовать вместо этого, а не почему оно устарело.
Добавьте аннотацию к методу, используя ключевое слово Obsolete
. Аргумент сообщения является необязательным, но это хорошая идея, чтобы сообщить, почему элемент теперь устарел и / или что использовать вместо него.
Пример:
[System.Obsolete("use myMethodB instead")]
void myMethodA()
С помощью ObsoleteAttribute
вы можете пометить метод как устаревший. В нем есть три конструктора:
[Obsolete]:
не является конструктором параметров и используется по умолчанию с использованием этого атрибута.[Obsolete(string message)]:
в этом формате вы можетеmessage
узнать, почему этот метод устарел.[Obsolete(string message, bool error)]:
в этом формате сообщение очень явное, ноerror
означает, что во время компиляции компилятор должен показывать ошибку и вызывать сбой компиляции или нет.
[EditorBrowsable(EditorBrowsableState.Never)]
(stackoverflow.com/a/9086345/661933). Служит немного другой цели. - person nawfal   schedule 16.03.2018