Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Remarque
Ce contenu est réimprimé avec l’autorisation de Pearson Education, Inc. tiré de Lignes directrices de conception de framework : Conventions, Idiomes et Modèles pour les bibliothèques .NET réutilisables, 2ème édition. Cette édition a été publiée en 2008, et le livre a été entièrement révisé dans la troisième édition. Certaines informations de cette page peuvent être obsolètes.
System.Attribute est une classe de base utilisée pour définir des attributs personnalisés.
Les attributs sont des annotations qui peuvent être ajoutées à des éléments de programmation tels que des assemblys, des types, des membres et des paramètres. Ils sont stockés dans les métadonnées de l’assembly et sont accessibles au moment de l’exécution à l’aide des API de réflexion. Par exemple, le cadre définit ObsoleteAttribute, qui peut être appliqué à un type ou à un membre pour indiquer que le type ou le membre est devenu obsolète.
Les attributs peuvent avoir une ou plusieurs propriétés qui contiennent des données supplémentaires liées à l’attribut. Par exemple, ObsoleteAttribute peut contenir des informations supplémentaires sur la version dans laquelle un type ou un membre a été déconseillé et la description des nouvelles API remplaçant l’API obsolète.
Certaines propriétés d’un attribut doivent être spécifiées lorsque l’attribut est appliqué. Elles sont appelées propriétés requises ou arguments requis, car elles sont représentées en tant que paramètres de constructeur positionnel. Par exemple, la ConditionString propriété du fichier ConditionalAttribute est une propriété obligatoire.
Les propriétés qui ne doivent pas nécessairement être spécifiées lorsque l’attribut est appliqué sont appelées propriétés facultatives (ou arguments facultatifs). Elles sont représentées par des propriétés paramétrables. Les compilateurs fournissent une syntaxe spéciale pour définir ces propriétés lorsqu’un attribut est appliqué. Par exemple, la AttributeUsageAttribute.Inherited propriété représente un argument facultatif.
✔️ Nommez des classes d’attributs personnalisées avec le suffixe « Attribute ».
✔️ Appliquez le AttributeUsageAttribute aux attributs personnalisés.
✔️ Fournissez des propriétés configurables pour les arguments facultatifs.
✔️ Fournit des propriétés get-only pour les arguments requis.
✔️ Fournissez des paramètres de constructeur pour initialiser les propriétés correspondant aux arguments requis. Chaque paramètre doit avoir le même nom (bien qu’avec une casse différente) que la propriété correspondante.
❌ ÉVITEz de fournir des paramètres de constructeur pour initialiser les propriétés correspondant aux arguments facultatifs.
En d'autres termes, n'ayez pas de propriétés qui peuvent être définies à la fois avec un constructeur et un setter. Cette directive rend très explicites quels arguments sont facultatifs et qui sont requis, et évite d’avoir deux façons de faire la même chose.
❌ ÉVITEZ de surcharger les constructeurs d’attributs personnalisés.
Avoir un seul constructeur communique clairement à l’utilisateur quels arguments sont requis et qui sont facultatifs.
✔️ Si possible, scellez les classes d'attributs personnalisées. Cela rend la recherche de l’attribut plus rapide.
Portions © 2005, 2009 Microsoft Corporation. Tous les droits réservés.
Réimprimé par l’autorisation de Pearson Education, Inc. tiré de Framework Design Guidelines : Conventions, Idioms et Patterns pour les bibliothèques .NET réutilisables, 2e édition par Krzysztof Cwalina et Brad Abrams, publié le 22 octobre 2008 par Addison-Wesley Professional dans le cadre de la Série de développement Microsoft Windows.