Compartir a través de


Introducción a los atributos (Visual Basic)

Los atributos proporcionan un método eficaz para asociar metadatos o información declarativa, con código (ensamblados, tipos, métodos, propiedades, etc.). Después de asociar un atributo a una entidad de programa, el atributo se puede consultar en tiempo de ejecución mediante una técnica denominada reflexión. Para obtener más información, vea Reflexión (Visual Basic).

Los atributos tienen las siguientes propiedades:

  • Los atributos agregan metadatos al programa. Metadatos son información sobre los tipos definidos en un programa. Todos los ensamblados de .NET contienen un conjunto especificado de metadatos que describe los tipos y miembros de tipo definidos en el ensamblado. Puede agregar atributos personalizados para especificar cualquier información adicional necesaria. Para obtener más información, vea Crear atributos personalizados (Visual Basic).

  • Puede aplicar uno o más atributos a ensamblados, módulos o elementos de programa más pequeños, como clases y propiedades.

  • Los atributos pueden aceptar argumentos de la misma manera que los métodos y propiedades.

  • El programa puede examinar sus propios metadatos o los metadatos de otros programas mediante la reflexión. Para obtener más información, vea Obtener acceso a atributos mediante reflexión (Visual Basic).

Uso de atributos

Los atributos se pueden colocar en la mayoría de las declaraciones, aunque un atributo específico podría restringir los tipos de declaraciones en las que es válido. En Visual Basic, un atributo se incluye entre corchetes angulares (<>). Debe aparecer inmediatamente antes del elemento al que se aplica, en la misma línea.

En este ejemplo, el atributo SerializableAttribute se usa para aplicar una característica específica a una clase:

<System.Serializable()> Public Class SampleClass
    ' Objects of this type can be serialized.
End Class

Un método con el atributo DllImportAttribute se declara de la siguiente manera:

Imports System.Runtime.InteropServices
<System.Runtime.InteropServices.DllImport("user32.dll")>
Sub SampleMethod()
End Sub

Se puede colocar más de un atributo en una declaración:

Imports System.Runtime.InteropServices
Sub MethodA(<[In](), Out()> ByVal x As Double)
End Sub
Sub MethodB(<Out(), [In]()> ByVal x As Double)
End Sub

Algunos atributos se pueden especificar más de una vez para una entidad determinada. Un ejemplo de este atributo multiuso es ConditionalAttribute:

<Conditional("DEBUG"), Conditional("TEST1")>
Sub TraceMethod()
End Sub

Nota:

Por convención, todos los nombres de atributo terminan con la palabra "Attribute" para distinguirlos de otros elementos de .NET Framework. Sin embargo, no es necesario especificar el sufijo de atributo al usar atributos en el código. Por ejemplo, [DllImport] es equivalente a [DllImportAttribute], pero DllImportAttribute es el nombre real del atributo en .NET Framework.

Parámetros de atributo

Muchos atributos tienen parámetros, que pueden ser posicionales, sin nombre o con nombre. Los parámetros posicionales deben especificarse en un orden determinado y no se pueden omitir; Los parámetros con nombre son opcionales y se pueden especificar en cualquier orden. Los parámetros posicionales se especifican primero. Por ejemplo, estos tres atributos son equivalentes:

<DllImport("user32.dll")>
<DllImport("user32.dll", SetLastError:=False, ExactSpelling:=False)>
<DllImport("user32.dll", ExactSpelling:=False, SetLastError:=False)>

El primer parámetro, el nombre del archivo DLL, es posicional y siempre viene primero; los demás son nombrados. En este caso, ambos parámetros con nombre tienen como valor predeterminado false, por lo que se pueden omitir. Consulte la documentación del atributo individual para obtener información sobre los valores de parámetro predeterminados.

Destinos de atributo

El destino de un atributo es la entidad a la que se aplica el atributo. Por ejemplo, un atributo puede aplicarse a una clase, a un método determinado o a un ensamblado completo. De forma predeterminada, un atributo se aplica al elemento que precede. Pero también puede identificar explícitamente, por ejemplo, si se aplica un atributo a un método o a su parámetro o a su valor devuelto.

Para identificar explícitamente un destino de atributo, use la sintaxis siguiente:

<target : attribute-list>

La lista de posibles valores de target se muestra en la tabla siguiente.

Valor del objetivo Se aplica a
assembly Ensamblado completo
module Módulo de ensamblado actual (que es diferente de un módulo de Visual Basic)

En el ejemplo siguiente se muestra cómo aplicar atributos a ensamblados y módulos. Para obtener más información, vea Atributos comunes (Visual Basic) .

Imports System.Reflection
<Assembly: AssemblyTitleAttribute("Production assembly 4"),
Module: CLSCompliant(True)>

Usos comunes para atributos

En la lista siguiente se incluyen algunos de los usos comunes de atributos en el código:

  • Marcar métodos mediante el atributo WebMethod en servicios web para indicar que el método debe llamarse a través del protocolo SOAP. Para obtener más información, consulte WebMethodAttribute.

  • Describir cómo manejar parámetros de método al interoperar con código nativo. Para obtener más información, consulte MarshalAsAttribute.

  • Describir las propiedades COM para clases, métodos e interfaces.

  • Llamada a código no administrado mediante la clase DllImportAttribute.

  • Describir el ensamblado en términos de título, versión, descripción o marca comercial.

  • Describir qué miembros de una clase serializar para la persistencia.

  • Describir cómo realizar asignaciones entre los miembros de clase y los nodos XML para la serialización XML.

  • Descripción de los requisitos de seguridad de los métodos.

  • Especificación de características usadas para aplicar la seguridad.

  • Controlar optimizaciones mediante el compilador Just-In-Time (JIT) para que el código siga siendo fácil de depurar.

  • Obtener información sobre el llamador de un método.

Para obtener más información, consulte:

Consulte también