Атрибут Obsolete используется для пометки типов и членов типов, которые не следует больше использовать.
namespace System
{
[AttributeUsage(
AttributeTargets.Class |
AttributeTargets.Struct |
AttributeTargets.Enum |
AttributeTargets.Interface |
AttributeTargets.Delegate |
AttributeTargets.Method |
AttributeTargets.Constructor |
AttributeTargets.Property |
AttributeTargets.Field |
AttributeTargets.Event,
Inherited = false)
]
public class ObsoleteAttribute: Attribute
{
public ObsoleteAttribute() {...}
public ObsoleteAttribute(string message) {...}
public ObsoleteAttribute(string message, bool error) {...}
public string Message { get {...} }
public bool IsError { get {...} }
}
}
Если программа использует тип или член, к которому добавлен атрибут Obsolete, компилятор выдает предупреждение или ошибку. А именно, компилятор выдает предупреждение, если не предоставлен параметр ошибки или если параметр ошибки имеет значение false. Компилятор выдает сообщение об ошибке, если указан параметр ошибки со значением true.
В примере
[Obsolete("This class is obsolete; use class B instead")]
class A
{
public void F() {}
}
class B
{
public void F() {}
}
class Test
{
static void Main() {
A a = new A(); // Warning
a.F();
}
}
к классу A добавляется атрибут Obsolete. Каждое использование A в Main приводит к выдаче предупреждения, в состав которого включено сообщение «Этот класс устаревший; используйте вместо него класс B».