Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede crear sus propios atributos personalizados definiendo una clase de atributo, una clase que deriva directa o indirectamente de Attribute, lo que facilita la identificación de definiciones de atributos en metadatos de forma rápida y sencilla. Supongamos que desea etiquetar tipos con el nombre del programador que escribió el tipo. Puede definir una clase de atributo personalizada Author
:
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct)
]
public class AuthorAttribute : System.Attribute
{
private string Name;
public double Version;
public AuthorAttribute(string name)
{
Name = name;
Version = 1.0;
}
}
El nombre de clase es el nombre del atributo AuthorAttribute
, Author
, además el sufijo Attribute
. Se deriva de System.Attribute
, por lo que es una clase de atributo personalizada. Los parámetros del constructor son los parámetros posicionales del atributo personalizado. En este ejemplo, name
es un parámetro posicional. Los campos o propiedades de lectura y escritura públicos son parámetros con nombre. En este caso, version
es el único parámetro con nombre. Tenga en cuenta el uso del atributo AttributeUsage
para que el atributo Author
sea válido solo en las clases y declaraciones de struct
.
Puede usar este nuevo atributo de la siguiente manera:
[Author("P. Ackerman", Version = 1.1)]
class SampleClass
{
// P. Ackerman's code goes here...
}
AttributeUsage
tiene un parámetro con nombre, AllowMultiple
, con el que puede crear un atributo personalizado de uso único o multiuso. En el ejemplo de código siguiente, se crea un atributo multiuso.
[System.AttributeUsage(System.AttributeTargets.Class |
System.AttributeTargets.Struct,
AllowMultiple = true) // Multiuse attribute.
]
public class AuthorAttribute : System.Attribute
{
string Name;
public double Version;
public AuthorAttribute(string name)
{
Name = name;
// Default value.
Version = 1.0;
}
public string GetName() => Name;
}
En el ejemplo de código siguiente, se aplican varios atributos del mismo tipo a una clase .
[Author("P. Ackerman"), Author("R. Koch", Version = 2.0)]
public class ThirdClass
{
// ...
}