Comment marquer une méthode comme obsolète ou obsolète?

Réponses:

1595

Le moyen le plus court consiste à ajouter l' attributObsoleteAttribute as à la méthode . Assurez-vous d'inclure une explication appropriée:

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

Vous pouvez également provoquer l'échec de la compilation, en traitant l'utilisation de la méthode comme une erreur au lieu d'un avertissement , si la méthode est appelée quelque part dans un code comme celui-ci:

[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]
24%
la source
98
si vous voulez que le compilateur génère une erreur si quelqu'un utilise la méthode, utilisez la méthode surchargée Obsolète (String Message, Bool error)
HitLikeAHammer
141
Obsolète sans description devrait être obsolète ... notherdev.blogspot.com/2013/02/obsolete-should-be-obsolete.html
dotjoe
31
Dans vos exemples, la partie "Méthode1 est déconseillée" est plutôt redondante. En le marquant comme obsolète, vous dites qu'il est en effet obsolète, donc pas besoin de le reformuler dans le message. D'autant plus que l'avertissement / l'erreur résultant lira «Méthode 1» est obsolète: «Méthode 1 est obsolète, veuillez utiliser la méthode 2 à la place.
irréel
8
C'est très bien. Je viens de mettre un exemple de texte pour montrer que vous pouvez ajouter un message plus spécifique si vous le souhaitez.
Chris Ballance
14
@ akshay2000 Renommer ou supprimer la méthode laisserait le consommateur ignorant pourquoi elle a été renommée ou supprimée et ce qui devrait être utilisé à la place.
Lensflare
136

Pour marquer comme obsolète avec un avertissement:

[Obsolete]
private static void SomeMethod()

Vous recevez un avertissement lorsque vous l'utilisez:

Un avertissement obsolète s'affiche

Et avec IntelliSense:

Avertissement obsolète avec IntelliSense

Si vous voulez un message:

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

Voici l'info-bulle IntelliSense:

IntelliSense affiche le message obsolète

Enfin, si vous souhaitez que l'utilisation soit signalée comme une erreur:

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

Lorsqu'il est utilisé, voici ce que vous obtenez:

L'utilisation de la méthode s'affiche comme une erreur

Remarque: utilisez le message pour indiquer aux utilisateurs ce qu'ils doivent utiliser à la place, et non pourquoi il est obsolète.

mark_h
la source
66

Ajoutez une annotation à la méthode à l'aide du mot clé Obsolete. L'argument de message est facultatif mais une bonne idée de communiquer pourquoi l'élément est maintenant obsolète et / ou quoi utiliser à la place.
Exemple:

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

Avec ObsoleteAttributevous pouvez afficher la méthode obsolète. L'attribut obsolète a trois constructeurs:

  1. [Obsolete]: est un constructeur sans paramètre et est une valeur par défaut utilisant cet attribut.
  2. [Obsolete(string message)]:dans ce format, vous pouvez comprendre messagepourquoi cette méthode est déconseillée.
  3. [Obsolete(string message, bool error)]:dans ce format, le message est très explicite mais errorsignifie, au moment de la compilation, que le compilateur doit afficher une erreur et provoquer l'échec de la compilation ou non.

entrez la description de l'image ici

Sina Lotfi
la source