Come contrassegnare un metodo come obsoleto o deprecato?


Risposte:


1595

Il modo più breve è aggiungendo ObsoleteAttributecome attributo al metodo . Assicurati di includere una spiegazione appropriata:

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

Puoi anche far fallire la compilazione, trattando l'uso del metodo come un errore invece che un avvertimento , se il metodo viene chiamato da qualche parte nel codice come questo:

[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]

98
se vuoi che il compilatore generi un errore se qualcuno usa il metodo usa il metodo sovraccarico Obsoleto (messaggio stringa, errore Bool)
HitLikeAHammer

141
Obsoleto senza una descrizione dovrebbe essere obsoleto ... notherdev.blogspot.com/2013/02/obsolete-should-be-obsolete.html
dotjoe

31
Negli esempi, la parte "Metodo1 è obsoleta" è piuttosto ridondante. Contrassegnandolo come obsoleto, stai dicendo che è davvero obsoleto, quindi non è necessario riaffermarlo nel messaggio. Soprattutto perché l'avvertimento / errore risultante leggerà "Metodo1" è obsoleto: "Metodo1 è obsoleto, utilizzare invece Metodo2".
irreale il

8
Va bene. Ho appena inserito un testo di esempio per mostrare che è possibile aggiungere un messaggio più specifico se lo si desidera.
Chris Ballance,

14
@ akshay2000 La ridenominazione o la rimozione del metodo non consentirebbe al consumatore di capire perché è stato rinominato o rimosso e quale dovrebbe essere utilizzato.
Lensflare

136

Per contrassegnare come obsoleto con un avviso:

[Obsolete]
private static void SomeMethod()

Ricevi un avviso quando lo usi:

Viene visualizzato un avviso obsoleto

E con IntelliSense:

Avvertimento obsoleto con IntelliSense

Se vuoi un messaggio:

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

Ecco il suggerimento di IntelliSense:

IntelliSense mostra il messaggio obsoleto

Infine, se vuoi che l'uso venga segnalato come errore:

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

Quando utilizzato, questo è ciò che ottieni:

L'uso del metodo viene visualizzato come errore

Nota: utilizzare il messaggio per dire alle persone cosa dovrebbero usare invece, non perché è obsoleto.


66

Aggiungi un'annotazione al metodo usando la parola chiave Obsolete. L'argomento del messaggio è facoltativo, ma è una buona idea comunicare perché l'articolo è ormai obsoleto e / o cosa utilizzare invece.
Esempio:

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

36

Con ObsoleteAttributete puoi mostrare il metodo deprecato. L'attributo obsoleto ha tre costruttori:

  1. [Obsolete]: è un costruttore senza parametri ed è un valore predefinito che utilizza questo attributo.
  2. [Obsolete(string message)]:in questo formato puoi capire messageperché questo metodo è deprecato.
  3. [Obsolete(string message, bool error)]:in questo formato il messaggio è molto esplicito ma errorsignifica, in fase di compilazione, il compilatore deve mostrare errori e causare la compilazione o meno.

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.