Jak oznaczyć metodę jako przestarzałą lub przestarzałą?

Odpowiedzi:

1594

Najkrótsza droga jest poprzez dodanie ObsoleteAttributejako atrybut do metody . Pamiętaj o podaniu odpowiedniego wyjaśnienia:

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

Możesz także spowodować niepowodzenie kompilacji, traktując użycie metody jako błąd zamiast ostrzeżenia , jeśli metoda jest wywoływana gdzieś w kodzie w następujący sposób:

[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]
poke
źródło
97
jeśli chcesz, aby kompilator generował błąd, jeśli ktoś korzysta z tej metody, użyj przeciążonej metody Obsolete (komunikat o błędzie, błąd
boolowy
140
Przestarzałe bez opisu powinny być przestarzałe ... notherdev.blogspot.com/2013/02/obsolete-should-be-obsolete.html
dotjoe
31
W przykładach część „Metoda 1 jest przestarzała” jest raczej zbędna. Oznaczając go jako przestarzały, mówisz, że jest on rzeczywiście przestarzały, więc nie ma potrzeby przekształcania go w wiadomość. Zwłaszcza, że ​​wynikowe ostrzeżenie / błąd brzmi: „Metoda 1” jest przestarzała: „Metoda 1 jest przestarzała, zamiast niej użyj Metody 2”.
irreal
8
W porządku. Właśnie umieściłem tam przykładowy tekst, aby pokazać, że możesz dodać bardziej konkretną wiadomość, jeśli chcesz.
Chris Ballance,
14
@ akshay2000 Zmiana nazwy lub usunięcie metody spowodowałoby, że konsument nie miałby pojęcia, dlaczego zmieniono jej nazwę lub usunięto i co należy zamiast tego zastosować.
Lensflare
135

Aby oznaczyć jako przestarzałe ostrzeżenie:

[Obsolete]
private static void SomeMethod()

Podczas korzystania z niego pojawia się ostrzeżenie:

Wyświetlane jest przestarzałe ostrzeżenie

A dzięki IntelliSense:

Przestarzałe ostrzeżenie dzięki IntelliSense

Jeśli chcesz wiadomość:

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

Oto podpowiedź IntelliSense:

IntelliSense pokazuje przestarzały komunikat

Wreszcie, jeśli chcesz, aby użycie zostało oznaczone jako błąd:

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

Po użyciu otrzymujesz:

Użycie metody jest wyświetlane jako błąd

Uwaga: użyj tego komunikatu, aby powiedzieć ludziom, czego powinni użyć, a nie dlaczego jest przestarzały.

mark_h
źródło
66

Dodaj adnotację do metody za pomocą słowa kluczowego Obsolete. Argument komunikatu jest opcjonalny, ale dobrym pomysłem jest poinformowanie, dlaczego element jest już nieaktualny i / lub czego użyć zamiast niego.
Przykład:

[System.Obsolete("use myMethodB instead")]
void myMethodA()
FTWinston
źródło
36

Dzięki ObsoleteAttributemożesz pokazać przestarzałą metodę. Przestarzały atrybut ma trzy konstruktory:

  1. [Obsolete]: jest konstruktorem bez parametrów i domyślnie korzysta z tego atrybutu.
  2. [Obsolete(string message)]:w tym formacie możesz dowiedzieć się, messagedlaczego ta metoda jest przestarzała.
  3. [Obsolete(string message, bool error)]:w tym formacie komunikat jest bardzo wyraźny, ale erroroznacza, że ​​w czasie kompilacji kompilator musi wyświetlać błędy i powodować niepowodzenia kompilacji lub nie.

wprowadź opis zdjęcia tutaj

Sina Lotfi
źródło