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
Outros recursos
Diretrizes de Design para desenvolvimento bibliotecas de classe