Partilhar via


Diretrizes de uso do atributo

A.NET Framework permite aos desenvolvedores inventar novos tipos de informações declarativas, para especificar informações declarativas para várias entidades de programa e recuperar informações de atributo em um ambiente de tempo de execução. Por exemplo, uma estrutura poderia definir um HelpAttribute atributo que pode ser colocado em elementos do programa, como classes e métodos para fornecer um mapeamento de elementos do programa para a sua documentação. Novos tipos de informações declarativas são definidos por meio da declaração de classes de atributo, que pode ter parâmetros posicionais e nomeados. Para obter mais informações sobre atributos, consulte Atributos personalizados de gravação.

As regras a seguir descrevem as diretrizes de uso para as classes de atributo:

  • Adicionar o Attribute o sufixo para classes de atributo personalizado, conforme mostrado no exemplo a seguir.

    Public Class ObsoleteAttribute
    
    public class ObsoleteAttribute{}
    
  • Especificar AttributeUsage em seus atributos para definir o seu uso com precisão, conforme mostrado no exemplo a seguir.

    <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 {}
    
  • Selar as classes de atributo sempre que possível, para que as classes não podem ser derivados deles.

  • Use argumentos posicionais (parâmetros de construtor) para os parâmetros necessários. Forneça uma propriedade somente leitura com o mesmo nome de cada argumento posicional, mas alterar as maiúsculas e minúsculas para diferenciá-las. Isso permite o acesso para o argumento em tempo de execução.

  • Usar argumentos nomeados para parâmetros opcionais e fornecem uma propriedade de leitura/gravação para cada argumento nomeado.

  • Não defina um parâmetro com argumentos nomeados e posicionais. O exemplo de código a seguir ilustra esse padrão.

    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. Todos os direitos reservados.

Portions Copyright Addison-Wesley Corporation. Todos os direitos reservados.

Para obter mais informações sobre as diretrizes de design, consulte a "diretrizes de Design do Framework: Convenções, idiomas e padrões de reutilizável.Bibliotecas de rede" catálogo por Krzysztof Cwalina e Brad Abrams, publicado pela Addison-Wesley, 2005.

Consulte também

Conceitos

Diretrizes de uso

Outros recursos

Diretrizes de Design para desenvolvimento bibliotecas de classe