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 Or
System.AttributeTargets.Struct)>
Public Class Author
Inherits System.Attribute
Private name As String
Public version As Double
Sub New(ByVal authorName As String)
name = authorName
version = 1.0
End Sub
End Class
El nombre de clase es el nombre del atributo, Author
. 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 Structure
.
Puede usar este nuevo atributo de la siguiente manera:
<Author("P. Ackerman", Version:=1.1)>
Class SampleClass
' P. Ackerman's code goes here...
End Class
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.
' multiuse attribute
<System.AttributeUsage(System.AttributeTargets.Class Or
System.AttributeTargets.Struct,
AllowMultiple:=True)>
Public Class Author
Inherits System.Attribute
En el ejemplo de código siguiente, se aplican varios atributos del mismo tipo a una clase .
<Author("P. Ackerman", Version:=1.1),
Author("R. Koch", Version:=1.2)>
Class SampleClass
' P. Ackerman's code goes here...
' R. Koch's code goes here...
End Class
Nota:
Si la clase de atributo contiene una propiedad , esa propiedad debe ser de lectura y escritura.