Aplicar atributos

Actualización: noviembre 2007

Para aplicar un atributo a un elemento del código se puede utilizar el proceso siguiente:

  1. Definir un atributo nuevo o utilizar uno existente importando su espacio de nombres de .NET Framework.

  2. Aplique el atributo al elemento de código colocándolo inmediatamente antes del elemento.

    Cada lenguaje tiene su propia sintaxis de atributo. En C++ y C#, el atributo está incluido entre corchetes y separado del elemento por un espacio en blanco, que puede incluir un salto de línea. En Visual Basic, el atributo está incluido entre corchetes angulares y debe estar en la misma línea lógica; se puede utilizar el carácter de continuación de línea si se desea un salto de línea. En J#, el atributo está asociado mediante una sintaxis de comentario especial.

  3. Especifique parámetros posicionales y parámetros con nombre para el atributo.

    Los parámetros posicionales son obligatorios y preceden a cualquier parámetro con nombre; corresponden a los parámetros de uno de los constructores del atributo. Los parámetros con nombre son opcionales y corresponden a las propiedades de lectura y escritura del atributo. En C++, C# y J#, especifique name=value para cada parámetro opcional, donde name es el nombre de la propiedad. En Visual Basic, especifique name:=value.

El atributo se emite en metadatos al compilar el código y queda disponible para Common Language Runtime y cualquier aplicación o herramienta personalizada a través de los servicios de reflexión en tiempo de ejecución.

Por convención, todos los nombres de atributos terminan con la palabra Attribute. Sin embargo, algunos lenguajes orientados a Common Language Runtime, como Visual Basic y C#, no requieren que se especifique el nombre completo de los atributos. Por ejemplo, si desea inicializar System.ObsoleteAttribute, sólo es necesario hacer referencia al mismo como Obsolete.

Aplicar un atributo a un método

El siguiente ejemplo de código muestra cómo se declara System.ObsoleteAttribute, que marca código como obsoleto. La cadena "Will be removed in next version" se pasa al atributo. Este atributo da lugar a una advertencia del compilador que muestra la cadena transferida cuando se llama al código que describe el atributo.

using System;
public class Example
{
    // Specify attributes between square brackets in C#.
    // This attribute is applied only to the Add method.
    [Obsolete("Will be removed in next version.")]
    public static int Add(int a, int b)
    {
        return (a + b);
    }
}
class Test
{
    static void Main()
    {
        // This generates a compile-time warning.
        int i = Example.Add(2, 2);
    }
}
using namespace System;
public ref class Example
{
public:
    // Specify attributes between square brackets in C++.
    // This attribute is applied only to the Add method.
    [Obsolete("Will be removed in next version ")]
    static int Add(int a, int b)
    {
        return (a + b);
    }
};
void main()
{
    // This generates a compile-time warning.
    int i = Example::Add(2, 2);
    return;
}
Imports System 
Public Class Example
    ' Specify attributes between angle brackets in Visual Basic,
    ' and keep them on the same logical line.
    ' This attribute is applied only to the Add method.
    <Obsolete("Will be removed in next version ")> _
    Public Shared Function Add(ByVal a As Integer, ByVal b As Integer) As Integer
        Return a + b
    End Function
End Class
Module Test
    Sub Main()
        ' This generates a compile-time warning.
        Dim i As Integer = Example.Add(2, 2)
    End Sub
End Module
import System.*;
public class Example
{
    // Specify attributes with comment syntax in J#.
    // This attribute is applied only to the Add method.
    /** @attribute Obsolete("Will be removed in next version") */
    public static int Add(int a, int b)
    {
        return (a + b);
    }
}

class Test
{ 
    public static void main()
    {
        // This generates a compile-time warning.
        int MyInt = Example.Add(2,2); 
    }
}

Aplicar atributos a ensamblados

Si desea aplicar un atributo a un ensamblado, utilice la palabra clave Assembly. El código siguiente muestra el atributo AssemblyNameAttribute aplicado a un ensamblado.

using System.Reflection;
[assembly:AssemblyName("MyAssembly")]
using namespace System::Reflection;
[assembly:AssemblyName("MyAssembly")]
Imports System.Reflection
<Assembly:AssemblyName("MyAssembly")> 
import System.Reflection.*;
/** @assembly AssemblyName("MyAssembly") */

Cuando se aplica este atributo, la cadena "MyAssembly" se coloca en el manifiesto del ensamblado, en la parte de metadatos del archivo. Se puede ver el atributo utilizando el Desensamblador de MSIL (Ildasm.exe) o creando un programa personalizado que recupere el atributo.

Vea también

Conceptos

Recuperar información almacenada en atributos

Aplicación de los atributos

Referencia

Utilizar atributos (Guía de programación de C#)

Asociar atributos

Otros recursos

Extender metadatos mediante atributos

Attributed Programming Concepts