Wie kann eine Methode als veraltet oder veraltet markiert werden?

Antworten:

1595

Der kürzeste Weg ist das Hinzufügen des AttributsObsoleteAttribute as als Attribut zur Methode . Stellen Sie sicher, dass Sie eine angemessene Erklärung hinzufügen:

[Obsolete("Method1 is deprecated, please use Method2 instead.")]
public void Method1()
{  }

Sie können auch dazu führen, dass die Kompilierung fehlschlägt, indem Sie die Verwendung der Methode als Fehler anstatt als Warnung behandeln , wenn die Methode von einer beliebigen Stelle im Code wie folgt aufgerufen wird:

[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]
stupsen
quelle
98
Wenn Sie möchten, dass der Compiler einen Fehler
auslöst,
141
Veraltet ohne Beschreibung sollte veraltet sein ... notherdev.blogspot.com/2013/02/obsolete-should-be-obsolete.html
dotjoe
31
In Ihren Beispielen ist der Teil "Methode1 ist veraltet" ziemlich redundant. Wenn Sie es als veraltet markieren, sagen Sie, dass es tatsächlich veraltet ist, sodass Sie es in der Nachricht nicht wiederholen müssen. Insbesondere da die resultierende Warnung / der Fehler lautet, dass "Methode1" veraltet ist: "Methode1 ist veraltet, verwenden Sie stattdessen stattdessen Methode2."
irreal
8
Das ist gut. Ich habe dort nur einen Beispieltext eingefügt, um zu zeigen, dass Sie eine spezifischere Nachricht hinzufügen können, wenn Sie möchten.
Chris Ballance
14
@ akshay2000 Das Umbenennen oder Entfernen der Methode lässt den Verbraucher keine Ahnung, warum sie umbenannt oder entfernt wurde und was stattdessen verwendet werden sollte.
Lensflare
136

Mit einer Warnung als veraltet markieren:

[Obsolete]
private static void SomeMethod()

Sie erhalten eine Warnung, wenn Sie es verwenden:

Veraltete Warnung wird angezeigt

Und mit IntelliSense:

Veraltete Warnung mit IntelliSense

Wenn Sie eine Nachricht wünschen:

[Obsolete("My message")]
private static void SomeMethod()

Hier ist der IntelliSense-Tooltipp:

IntelliSense zeigt die veraltete Nachricht an

Wenn Sie möchten, dass die Verwendung als Fehler gekennzeichnet wird:

[Obsolete("My message", true)]
private static void SomeMethod()

Bei Verwendung erhalten Sie Folgendes:

Die Methodenverwendung wird als Fehler angezeigt

Hinweis: Verwenden Sie die Nachricht, um den Benutzern mitzuteilen, was sie stattdessen verwenden sollen, und nicht, warum sie veraltet ist.

mark_h
quelle
66

Fügen Sie der Methode mit dem Schlüsselwort eine Anmerkung hinzu Obsolete. Das Nachrichtenargument ist optional, aber eine gute Idee, um mitzuteilen, warum das Element jetzt veraltet ist und / oder was stattdessen verwendet werden soll.
Beispiel:

[System.Obsolete("use myMethodB instead")]
void myMethodA()
FTWinston
quelle
36

Mit können ObsoleteAttributeSie die veraltete Methode anzeigen. Das veraltete Attribut hat drei Konstruktoren:

  1. [Obsolete]: ist ein Konstruktor ohne Parameter und wird standardmäßig mit diesem Attribut verwendet.
  2. [Obsolete(string message)]:In diesem Format erfahren Sie, messagewarum diese Methode veraltet ist.
  3. [Obsolete(string message, bool error)]:In diesem Format ist die Nachricht sehr explizit, errorbedeutet jedoch , dass der Compiler in der Kompilierungszeit einen Fehler anzeigen und dazu führen muss, dass die Kompilierung fehlschlägt oder nicht.

Geben Sie hier die Bildbeschreibung ein

Sina Lotfi
quelle