Vue d'ensemble des attributs
Si vous avez déjà utilisé C++, vous avez probablement l'habitude des déclarations contenant des mots clés tels que public et private, qui fournissent des informations supplémentaires sur les membres de la classe. Ces mots clés définissent le comportement des membres de la classe en décrivant leur accessibilité à d'autres classes. Étant donné que les compilateurs sont explicitement conçus pour reconnaître des mots clés prédéfinis, vous n'avez généralement pas la possibilité de créer les vôtres. Cependant, le Common Language Runtime vous permet d'ajouter des déclarations descriptives de type mot clé, appelées attributs, pour annoter les éléments de programmation tels que les types, champs, méthodes et propriétés.
Lorsque vous compilez votre code pour le runtime, il est converti en langage MSIL (Microsoft Intermediate Language), puis il est placé dans un fichier exécutable portable avec les métadonnées générées par le compilateur. Les attributs vous permettent de placer dans les métadonnées des informations descriptives supplémentaires, qui peuvent être extraites à l'aide des services de réflexion du runtime. Le compilateur crée des attributs lorsque vous déclarez des instances de classes spéciales dérivées de System.Attribute.
Le .NET Framework utilise les attributs pour diverses raisons et répondre à un certain nombre de problèmes. Les attributs précisent les modalités de la sérialisation des données, spécifient des caractéristiques qui sont utilisées pour faire appliquer la sécurité et limitent les optimisations par le compilateur juste-à-temps de sorte que le code reste facile à déboguer. Les attributs peuvent aussi enregistrer le nom d'un fichier ou le nom de l'auteur d'un code, ou encore contrôler la visibilité de contrôles et de membres lors du développement de formulaires.
Vous pouvez utiliser les attributs pour décrire votre code de quasiment toutes les façons concevables et affecter le comportement à l'exécution de manière nouvelle et créative. Les attributs vous permettent d'ajouter vos propres éléments descriptifs au langage C#, Visual C++, Microsoft Visual Basic 2005 ou à tout autre langage qui cible le runtime, sans avoir à réécrire votre compilateur.