Obsolete (C#-Programmierhandbuch)

Aktualisiert: November 2007

Das Obsolete-Attribut kennzeichnet eine Programmentität, die nicht mehr zur Verwendung empfohlen wird. Jedes Mal, wenn eine als veraltet gekennzeichnete Entität verwendet wird, wird daraufhin je nach Konfiguration des Attributs eine Warnung oder ein Fehler generiert. Beispiel:

[System.Obsolete("use class B")]
class A
{
    public void Method() { }
}
class B
{
    [System.Obsolete("use NewMethod", true)]
    public void OldMethod()  { }
    public void NewMethod()  { }
}

In diesem Beispiel wird das Obsolete-Attribut auf Klasse A und Methode B.OldMethod angewendet. Da das zweite Argument des Attributkonstruktors, das auf B.OldMethod angewendet wird, auf true festgelegt ist, führt die Verwendung dieser Methode zu einem Compilerfehler. Die Verwendung der Klasse A erzeugt jedoch lediglich eine Warnung. Durch den Aufruf von B.NewMethod wird jedoch keine Warnung bzw. kein Fehler erzeugt.

Die Zeichenfolge, die dem Attributkonstruktor als erstes Argument zur Verfügung steht, wird als Teil der Warnung bzw. des Fehlers angezeigt. Zum Beispiel generiert der folgende Code zwei Warnungen und einen Fehler, wenn er mit den vorherigen Definitionen verwendet wird:

// 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();

Es werden zwei Warnungen für die Klasse A generiert: eine für die Deklaration des Klassenverweises und eine für den Klassenkonstruktor.

Das Obsolete-Attribut kann ohne Argumente verwendet werden. Es ist jedoch empfehlenswert, eine Erklärung einzubinden, warum das Element veraltet ist und was alternativ dazu verwendet werden kann.

Das Obsolete-Attribut ist ein einmal verwendbares Attribut und kann auf jede Entität angewendet werden, die Attribute zulässt. Obsolete ist ein Alias für ObsoleteAttribute.

Siehe auch

Konzepte

C#-Programmierhandbuch

Referenz

Reflektion (C#-Programmierhandbuch)

Attribute (C#-Programmierhandbuch)

Auflösen der Mehrdeutigkeit von Attributzielen (C#-Programmierhandbuch)

Erstellen benutzerdefinierter Attribute (C#-Programmierhandbuch)

Zugriff auf Attribute mit Reflektion (C#-Programmierhandbuch)

Attribute

System.Reflection