Aplicar atributos

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

  1. Defina um novo atributo ou use um atributo do .NET existente.

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

    Cada linguagem tem sua própria sintaxe de atributo. Em C++ e C#, o atributo é delimitado por colchetes e separado do elemento por um espaço em branco, que pode incluir uma quebra de linha. No Visual Basic, o atributo é delimitado por colchetes angulares e deve estar na mesma linha lógica. O caractere de continuação de linha pode ser usado se você quiser uma quebra de linha.

  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 constructos do atributo. Parâmetros nomeados são opcionais e correspondem às propriedades do atributo de leitura/gravação. Em C++ e C#, especifique name=value para cada parâmetro opcional, em que name é o nome da propriedade. No 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 todas as ferramentas ou aplicativos personalizados por meio dos serviços de reflexão do tempo de execução.

Por convenção, todos os nomes de atributos terminam com o sufixo "Attribute". No entanto, várias linguagens que têm como destino o runtime, como Visual Basic e C#, não exigem que você especifique o nome completo de um atributo. Por exemplo, se quiser inicializar System.ObsoleteAttribute, você só precisa fazer referência a ele como Obsoleto.

Aplicar um atributo a um método

O exemplo de código a seguir mostra como usar System.ObsoleteAttribute, que marca o código como obsoleto. A cadeia de caracteres "Will be removed in next version" é passada para o atributo. Esse atributo faz com que o compilador que exibe a cadeia de caracteres transmitida emita um aviso quando o código que descreve o atributo for chamado.

public ref class Example
{
    // Specify attributes between square brackets in C#.
    // This attribute is applied only to the Add method.
public:
    [Obsolete("Will be removed in next version.")]
    static int Add(int a, int b)
    {
        return (a + b);
    }
};

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

int main()
{
    Test::Main();
}
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
{
    public static void Main()
    {
        // This generates a compile-time warning.
        int i = Example.Add(2, 2);
    }
}
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 Shared Function Add(a As Integer, b As Integer) As Integer
        Return a + b
    End Function
End Class

Class Test
    Public Shared Sub Main()
        ' This generates a compile-time warning.
        Dim i As Integer = Example.Add(2, 2)
    End Sub
End Class

Aplicar atributos no nível de assembly

Se você quiser aplicar um atributo no nível de assembly, use a palavra-chave assembly (Assembly no Visual Basic). O código a seguir mostra o AssemblyTitleAttribute aplicado no nível de assembly.

using namespace System::Reflection;
[assembly:AssemblyTitle("My Assembly")];
using System.Reflection;
[assembly:AssemblyTitle("My Assembly")]
Imports System.Reflection
<Assembly: AssemblyTitle("My Assembly")>

Quando esse atributo é aplicado, a cadeia de caracteres "My Assembly" é colocada no manifesto do assembly na parte de metadados do arquivo. Você pode exibir o atributo usando o Desmontador de IL (Ildasm.exe) ou criando um programa personalizado para recuperar o atributo.

Confira também