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

Jak oznaczyć metodę jako przestarzałą lub przestarzałą za pomocą C#?

Author: Chris Ballance, 2009-11-19

4 answers

Najkrótszą drogą jest dodanie ObsoleteAttribute jako atrybut do metody . Upewnij się, że zawiera odpowiednie wyjaśnienie:

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

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

[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]
 1315
Author: poke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-05 04:50:24

Oznaczyć jako przestarzałe z ostrzeżeniem:

[Obsolete]
private static void SomeMethod()

Dostajesz ostrzeżenie, gdy go używasz:

Wyświetlono przestarzałe Ostrzeżenie

I z IntelliSense:

Przestarzałe ostrzeżenie z IntelliSense

Jeśli chcesz wiadomość:

[Obsolete("My message")]
private static void SomeMethod()
Oto podpowiedź narzędzia IntelliSense:

IntelliSense pokazuje przestarzały komunikat

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

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

W przypadku użycia to jest to, co otrzymujesz:

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

Uwaga: użyj wiadomości, aby powiedzieć ludziom, czego powinni używać zamiast tego, a nie dlaczego przestarzałe.

 75
Author: mark_h,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-12 08:45:55

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

[System.Obsolete("use myMethodB instead")]
void myMethodA()
 55
Author: FTWinston,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-03 11:33:15

Za pomocą ObsoleteAttribute możesz pokazać metodę deprecated. Przestarzały atrybut ma trzy konstruktory:

  1. {[2] } jest konstruktorem bez parametru i domyślnie używa tego atrybutu.
  2. [Obssolete(string message)]: w tym formacie możesz dowiedzieć się, dlaczego ta metoda jest przestarzała.
  3. [Obsolete(string message, bool error)]: w tym formacie wiadomość jest bardzo jednoznaczna, ale error oznacza, że w czasie kompilacji kompilator musi wykazywać błąd i powodować niepowodzenie kompilacji lub nie.

Tutaj wpisz opis obrazka

 2
Author: Sina Lotfi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-18 13:08:49