Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Use o processo a seguir para aplicar um atributo a um elemento do código.
Defina um novo atributo ou use um atributo .NET existente.
Aplique o atributo ao elemento de código colocando-o imediatamente antes do elemento.
Cada idioma tem sua própria sintaxe de atributo. Em C++ e C#, o atributo é cercado por colchetes e separado do elemento por espaço em branco, o que pode incluir uma quebra de linha. Em Visual Basic, o atributo é cercado por colchetes angulares e deve estar na mesma linha lógica; o caractere de continuação de linha pode ser usado se uma quebra de linha for desejada.
Especifique parâmetros posicionais e parâmetros nomeados para o atributo.
Parâmetros posicionais são necessários e devem vir antes de qualquer parâmetro nomeado; correspondem aos parâmetros de um dos construtores do atributo. Os parâmetros nomeados são opcionais e correspondem às propriedades de leitura/gravação do atributo. Em C++e C#, especifique
name=valuepara cada parâmetro opcional, ondenameestá o nome da propriedade. Em Visual Basic, especifiquename:=value.
O atributo é emitido em metadados quando você compila seu código e está disponível para o tempo de execução de linguagem comum e qualquer ferramenta ou aplicativo personalizado por meio dos serviços de reflexão do tempo de execução.
Por convenção, todos os nomes de atributo terminam com "Attribute". No entanto, vários idiomas direcionados ao runtime, como Visual Basic e C#, não exigem que você especifique o nome completo de um atributo. Por exemplo, se você quiser inicializar System.ObsoleteAttribute, só precisará referenciá-lo como Obsoleto.
Argumentos de atributo válidos
Ao passar argumentos para um atributo, use um dos seguintes tipos de expressões:
- Expressões constantes (literais,
const/Constvalores e valores de enumeração). - Expressões de tipo (
typeofem C#,GetTypeem Visual Basic). - Expressões de nome (
nameofem C#,NameOfem Visual Basic), que produzem constantes de cadeia de caracteres em tempo de compilação. - Expressões de criação de matriz de um tipo de parâmetro de atributo que usam apenas as expressões anteriores como valores de elemento.
Os seguintes tipos são válidos como tipos de parâmetro de atributo:
Tipos simples (palavra-chave do C# / palavra-chave do Visual Basic / tipo de tempo de execução do .NET):
C# Visual Basic Tipo de .NET Runtime boolBooleanBoolean byteByteByte charCharChar doubleDoubleDouble floatSingleSingle intIntegerInt32 longLongInt64 shortShortInt16 stringStringString object(em C#, quando o valor é um dos tipos de argumento de atributo válidos ou uma matriz unidimensional deles).Type.
Tipos de enumeração acessíveis no site de uso.
Matrizes unidimensionais de qualquer um dos tipos anteriores.
Observação
Os tipos sbyte, ushort, uint, ulong, , decimal, e nintnuintnão são tipos de parâmetro de atributo válidos, mesmo que eles dão suporte a constantes literais.
Os exemplos a seguir mostram argumentos de atributo válidos:
[MyAttr(true)] // bool literal
[MyAttr(42)] // int literal
[MyAttr("hello")] // string literal
[MyAttr(MyEnum.Value)] // enum value
[MyAttr(typeof(string))] // typeof expression
[MyAttr(nameof(MyClass))] // nameof expression (string constant)
[MyAttr(new int[] { 1, 2, 3 })] // array of constants
[MyAttr(new string[] { "a", "b" })] // array of strings
<MyAttr(True)> ' Boolean literal
<MyAttr(42)> ' Integer literal
<MyAttr("hello")> ' String literal
<MyAttr(MyEnum.Value)> ' Enum value
<MyAttr(GetType(String))> ' GetType expression
<MyAttr(NameOf(MyClass))> ' NameOf expression (string constant)
<MyAttr(New Integer() {1, 2, 3})> ' Array of constants
Os exemplos a seguir mostram argumentos que causam um erro do compilador:
string value = "test";
[MyAttr(value)] // Error CS0182: not a constant expression
[MyAttr(GetValue())] // Error CS0182: method calls aren't allowed
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 causa um aviso do compilador que exibe a cadeia de caracteres passada quando o código que o atributo descreve é chamado.
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 do assembly
Se você quiser aplicar um atributo no nível do assembly, use a palavra-chave assembly (Assembly em Visual Basic). O código a seguir mostra o AssemblyTitleAttribute aplicado no nível de 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 IL Disassembler (Ildasm.exe) ou criando um programa personalizado para recuperar o atributo.