Aplicando atributos

Use o seguinte processo para aplicar um atributo a um elemento do código.

  1. Defina um novo atributo ou use um atributo existente importando seu namespace do .NET Framework.

  2. Aplique o atributo para o elemento de código colocando-o imediatamente antes do elemento.

    Cada linguagem tem sua própria sintaxe de atributo.No C# e no C++, o atributo é circundado por colchetes e separado do elemento por espaço em branco, que pode incluir uma quebra de linha.Em Visual Basic, o atributo é circundado por colchetes angulares e deve estar na mesma linha lógica; o caractere de continuação de linha pode ser usado caso se deseje uma quebra de linha.Em J#, o atributo é conectado usando sintaxe especial de comentário.

  3. Especifique parâmetros posicionais e parâmetros nomeados para o atributo.

    Parâmetros posicionais são necessários e devem vir antes de quaisquer parâmetros nomeados; eles correspondem aos parâmetros de um dos construtores do atributo.Parâmetros nomeados são opcionais e correspondem às propriedades do atributo de leitura/gravação.Em C++, C# e J#, especifique name=value para cada parâmetro opcional, onde name é o nome da propriedade.Em Visual Basic, especifique name:=value.

O atributo é emitido em metadados quando você compila o código e está disponível para o Common Language Runtime e qualquer ferramenta ou aplicativo personalizado por meio dos serviços de reflexo do tempo de execução.

Por convenção, todos os nomes de atributo terminam com Atributo.No entanto, várioa linguagens que direcionam o tempo de execução, como Visual Basic e C#, não exigem que você especifique a nome completo de um atributo.Por exemplo, se você quiser inicializar System.ObsoleteAttribute, você só precisará fazer referência a ele como Obsolete .

Aplicando um atributo a um método

O exemplo de código a seguir mostra como declarar System.ObsoleteAttribute , que marca o código como obsoleto.A sequência de caracteres "Will be removed in next version" é passada para o atributo.Esse atributo causa um aviso do compilador que exibe a sequência de caracteres passada quando o código que descreve o atributo for chamado.

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); 
    }
}

Aplicando atributos no nível do conjunto de módulos

Se você quiser aplicar um atributo no nível do conjunto de módulos, use a palavra-chave Assembly.O código a seguir mostra AssemblyNameAttribute aplicado no nível do conjunto de módulos.

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") */

Quando esse atributo é aplicado, a sequência de caracteres "MyAssembly" é colocada na manifesto do assembly na parte de metadados do arquivo.Você pode exibir o atributo usando o Desassemblador do MSIL (ILDASM.exe) ou criando um programa personalizado para recuperar o atributo.

Consulte também

Conceitos

Recuperando Informações Armazenadas em Atributos

Aplicação de Atributos

Referência

Usando atributos (C# Guia de programação)

Attaching Atributos

Outros recursos

Estendendo metadados usando atributos

Atribuído Programming Concepts