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.