Utiliser des attributs

Effectué

Les attributs représentent ou stockent des métadonnées sur les comportements des classes et des méthodes. Pour associer un attribut, il suffit de saisir le nom de l’attribut entre crochets avant la déclaration de classe/fonction où il doit être appliqué.

Exemple

L’attribut SysObsoleteAttribute(message,setError), par exemple, peut être utilisé sur les méthodes ou les classes qui ne doivent plus être utilisées. Pendant le processus de construction, l’utilisateur sera averti par un message détaillé qui apparaît dans les fenêtres de sortie. Le premier paramètre est le message, tandis que le second paramètre indique si une erreur (true) ou un avertissement (false) doit être défini. Le compilateur peut rejeter ou afficher un avertissement.

Si l’API ne fonctionne plus, définissez isError = true dans l’attribut SysObsoleteAttribute afin que le compilateur signale toute utilisation de cette API comme une erreur de compilation.

 [SysObsoleteAttribute("The Automobile class might have faster performance.", false)]
 internal class Bicycle
 {
    // Members of the Bicycle class go here.
 }

Classes d’attribut

Les attributs peuvent également être créés à l’aide de classes d’attributs. Pour créer une classe d’attributs, étendez la classe SysAttribute en ajoutant extend SysAttribute à la fin de votre déclaration de classe. Vous pouvez ensuite décorer une classe avec l’attribut créé à partir de la classe d’attributs. Vous pouvez spécifier les paramètres d’attributs à partir du constructeur. Dans le code suivant, la classe d’attribut PracticeAttribute est créée, puis la classe RegularClass utilise PracticeAttribute comme attribut.

Exemple

L’exemple suivant montre la déclaration et la conception d’une classe d’attributs ordinaire que vous pouvez créer.

 public class PracticeAttribute extends SysAttribute
 {
   // Fields in the classDeclaration.
   StartEnd startEndEnum;
   str reason;
 }
   // Constructor.
   public void new(StartEnd _startEndEnum, str _reason)
  {
    startEndEnum = _startEndEnum;
    reason = _reason;
  }
[PracticeAttribute(StartEnd::End, "Use the RegularClass class at the end.")]
 public class RegularClass
 {
    [PracticeAttribute(Startend::Start, "Use the rehearse method at the start.")]
	public int rehearse()
    {
      // Logic goes here.
        int rehearse;
        return rehearse;
    }
      // More fields and methods belong here.
 }

Les attributs ont de nombreuses utilisations, notamment les suivantes :

  • Indiquer si la méthode doit pouvoir être appelée au moyen du protocole SOAP (Simple Object Access Protocol) afin d’échanger des informations à l’aide de l’attribut WebMethod dans les services web
  • Appeler du code non géré à l’aide de DLLImportAttribute
  • Décrire le titre, la version, la description ou la marque d’un assembly
  • Décrire le mappage entre les classes, les membres et les nœuds XML (eXtensible Markup Language) pour la sérialisation
  • Décrire les exigences de sécurité pour les méthodes
  • Spécifier des caractéristiques pour renforcer la sécurité
  • Obtenir des informations sur l’appelant à une méthode

Ressources

Pour en savoir plus, consultez Classes et méthodes.