Partager via


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