Obsolete (C# Programming Guide)
The Obsolete
attribute marks a program entity as one that is no longer recommended for use. Each use of an entity marked obsolete will subsequently generate a warning or an error, depending on how the attribute is configured. For example:
[System.Obsolete("use class B")]
class A
{
public void Method() { }
}
class B
{
[System.Obsolete("use NewMethod", true)]
public void OldMethod() { }
public void NewMethod() { }
}
In this example the Obsolete
attribute is applied to class A
and to method B.OldMethod
. Because the second argument of the attribute constructor applied to B.OldMethod
is set to true, using this method will result in a compiler error, whereas using class A
will merely produce a warning. Calling B.NewMethod
, however, produces no warning or error.
The string provided as the first argument to attribute constructor will be displayed as part of the warning or error. For example, when used with the previous definitions, the following code generates two warnings and one error:
// 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();
Two warnings for class A
are generated: one for the declaration of the class reference, and one for the class constructor.
The Obsolete
attribute can be used without arguments, but including an explanation of why the item is obsolete and what to use instead is recommended.
The Obsolete
attribute is a single-use attribute and can be applied to any entity that allows attributes. Obsolete
is an alias for ObsoleteAttribute.
See Also
Reference
Disambiguating Attribute Targets (C# Programming Guide)
Creating Custom Attributes (C# Programming Guide)
Accessing Attributes With Reflection (C# Programming Guide)
Attribute
Attribute
System.Reflection
Concepts
C# Programming Guide
Reflection (C# Programming Guide)
Attributes (C# Programming Guide)