Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você pode criar seus próprios atributos personalizados definindo uma classe de atributo, uma classe que deriva direta ou indiretamente de Attribute. Isso torna a identificação de definições de atributos em metadados rápida e fácil. Suponha que você queira marcar tipos com o nome do programador que escreveu o tipo. Você pode definir uma classe de atributo personalizada Author :
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct)
]
public class AuthorAttribute : System.Attribute
{
private string Name;
public string Version;
public AuthorAttribute(string name)
{
Name = name;
Version = "1.0";
}
}
O nome AuthorAttribute da classe é o nome do atributo, Authormais o Attribute sufixo. Ela é derivada de System.Attribute, portanto, é uma classe de atributo personalizada. Os parâmetros do construtor são os parâmetros posicionais do atributo personalizado. Neste exemplo, name é um parâmetro posicional. Quaisquer propriedades ou campos públicos de leitura/gravação são chamados de parâmetros. Nesse caso, version é o único parâmetro nomeado. Observe o uso do AttributeUsage atributo para tornar o Author atributo válido somente em classes e struct declarações.
Você pode usar esse novo atributo da seguinte maneira:
[Author("P. Ackerman", Version = "1.1")]
class SampleClass
{
// P. Ackerman's code goes here...
}
AttributeUsage tem um parâmetro nomeado, AllowMultiplecom o qual você pode fazer um atributo personalizado de uso único ou multiutilização. No exemplo de código a seguir, um atributo multiuso é criado.
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct,
AllowMultiple = true) // Multiuse attribute.
]
public class AuthorAttribute : System.Attribute
{
string Name;
public string Version;
public AuthorAttribute(string name)
{
Name = name;
// Default value.
Version = "1.0";
}
public string GetName() => Name;
}
No exemplo de código a seguir, vários atributos do mesmo tipo são aplicados a uma classe.
[Author("P. Ackerman"), Author("R. Koch", Version = "2.0")]
public class ThirdClass
{
// ...
}