Когда работаешь над проектом продолжительное время, порой возникает необходимость запрета использования одних методов/классов и замене их другими. Данный переход должен быть максимально безболезненным для разработчиков и всё необходимое для этого в C# уже есть…
Напишем небольшой класс, содержащий 2 метода OldMethod и NewMethod.
public class TestObsolete
{
public void OldMethod()
{
Console.WriteLine("Это старый метод, который не рекомендуется использовать");
}
public void NewMethod()
{
Console.WriteLine("Это новый метод, надо использовать его");
}
}
При использовании любого из методов в классе, мы не получим никаких предупреждений, что мы не должны использовать метод OldMethod. Что нужно делать в данном случае? Наиболее правильное решение, использовать атрибут Obsolete:
[Obsolete]
public void OldMethod()
{
Console.WriteLine("Это старый метод, который не рекомендуется использовать");
}
public void NewMethod()
{
Console.WriteLine("Это новый метод, надо использовать его");
}
Теперь при использовании данного метода, мы увидим предупреждение.
Также мы увидим предупреждение в окне «Error List»:

Можно добавить свой комментарий, объясняющий пользователю, почему не стоит использовать данный метод:
[Obsolete("Данный метод перестанет работать в следующей версии приложения")]
Теперь в окре «Error List» мы увидим более детальное предупреждение:
Если же нужно однозначно запретить использовать данный метод, то достаточно добавить в атрибут true.
[Obsolete("Нельзя использовать данный метод!",true)]
Теперь, при использовании данного метода мы получим ошибку:
Надеюсь эта небольшая статья поможет кому-то писать более качественный код…
Приятного программирования.