Indications concernant l'utilisation des attributs
Mise à jour : novembre 2007
.NET Framework permet aux développeurs d'inventer de nouvelles sortes d'informations déclaratives, de spécifier des informations déclaratives pour plusieurs entités de programme et de récupérer des informations relatives aux attributs dans un environnement runtime. Par exemple, une infrastructure peut définir un attribut HelpAttribute qui peut être placé sur des éléments de programme tels que des classes et des méthodes afin de fournir un mappage des éléments de programme à leur documentation. De nouvelles sortes d'informations déclaratives sont définies via la déclaration de classes d'attributs, qui peuvent comporter des paramètres nommés et positionnels. Pour plus d'informations sur les attributs, consultez Écriture des attributs personnalisés.
Les règles suivantes mettent en avant les indications d'utilisation pour les classes d'attributs :
Ajoutez le suffixe Attribute aux classes d'attributs personnalisés, comme le montre l'exemple suivant.
Public Class ObsoleteAttribute{}
public class ObsoleteAttribute{}
Spécifiez AttributeUsage sur vos attributs afin de définir précisément leur utilisation, comme le montre l'exemple suivant.
<AttributeUsage(AttributeTargets.All, Inherited := False, AllowMultiple := True)> _ Public Class ObsoleteAttribute Inherits Attribute ' Insert code here. End Class
[AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)] public class ObsoleteAttribute: Attribute {}
Scellez les classes d'attributs autant que possible afin que des classes ne puissent pas en dériver.
Utilisez des arguments positionnels (paramètres de constructeur) pour les paramètres requis. Donnez à une propriété en lecture seule le même nom qu'à chaque argument positionnel, mais modifiez la casse afin de pouvoir les différencier. Cela permet d'accéder à l'argument au moment de l'exécution.
Utilisez des arguments nommés pour les paramètres optionnels et fournissez une propriété en lecture/écriture pour chaque argument nommé.
Ne définissez pas un paramètre avec des arguments positionnels et nommés à la fois. L'exemple de code suivant illustre ce modèle.
Public Class NameAttribute Inherits Attribute Private userNameValue as String Private ageValue as Integer ' This is a positional argument. Public Sub New(userName As String) userNameValue = userName End Sub Public ReadOnly Property UserName() As String Get Return userNameValue End Get End Property ' This is a named argument. Public Property Age() As Integer Get Return ageValue End Get Set ageValue = value End Set End Property End Class
public class NameAttribute: Attribute { string userName; int age; // This is a positional argument. public NameAttribute (string userName) { this.userName = userName; } public string UserName { get { return userName; } } // This is a named argument. public int Age { get { return age; } set { age = value; } } }
Portions Copyright 2005 Microsoft Corporation. Tous droits réservés.
Portions Copyright Addison-Wesley Corporation. Tous droits réservés.
Pour plus d'informations sur les règles de conception, consultez le livre « Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries » de Krzysztof Cwalina et Brad Abrams, publié par Addison-Wesley, 2005.
Voir aussi
Concepts
Indications relatives à l'utilisation
Autres ressources
Instructions de conception pour le développement de bibliothèques de classes