Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os atributos fornecem um método poderoso de associar metadados, ou informações declarativas, com código (assemblies, tipos, métodos, propriedades e assim por diante). Depois que um atributo é associado a uma entidade de programa, o atributo pode ser consultado em tempo de execução usando uma técnica chamada reflection. Para obter mais informações, consulte Reflexão (Visual Basic).
Os atributos têm as seguintes propriedades:
Os atributos adicionam metadados ao seu programa. Metadados é a informação sobre os tipos definidos em um programa. Todos os assemblies .NET contêm um conjunto especificado de metadados que descrevem os tipos e membros de tipo definidos no assembly. Você pode adicionar atributos personalizados para especificar quaisquer informações adicionais necessárias. Para obter mais informações, consulte Criando atributos personalizados (Visual Basic).
Você pode aplicar um ou mais atributos a assemblies inteiros, módulos ou elementos de programa menores, como classes e propriedades.
Os atributos podem aceitar argumentos da mesma forma que métodos e propriedades.
Seu programa pode examinar seus próprios metadados ou os metadados em outros programas usando reflexão. Para obter mais informações, consulte Acessando atributos usando reflexão (Visual Basic).
Usando atributos
Os atributos podem ser colocados na maioria das declarações, embora um atributo específico possa restringir os tipos de declarações nas quais ela é válida. No Visual Basic, um atributo é colocado entre colchetes angulares (<>). Deve aparecer imediatamente antes do elemento a que se aplica, na mesma linha.
Neste exemplo, o atributo SerializableAttribute é usado para aplicar uma característica específica a uma classe:
<System.Serializable()> Public Class SampleClass
' Objects of this type can be serialized.
End Class
Um método com o atributo DllImportAttribute é declarado assim:
Imports System.Runtime.InteropServices
<System.Runtime.InteropServices.DllImport("user32.dll")>
Sub SampleMethod()
End Sub
Mais de um atributo pode ser colocado em uma declaração:
Imports System.Runtime.InteropServices
Sub MethodA(<[In](), Out()> ByVal x As Double)
End Sub
Sub MethodB(<Out(), [In]()> ByVal x As Double)
End Sub
Alguns atributos podem ser especificados mais de uma vez para uma determinada entidade. Um exemplo desse atributo multiuso é ConditionalAttribute:
<Conditional("DEBUG"), Conditional("TEST1")>
Sub TraceMethod()
End Sub
Observação
Por convenção, todos os nomes de atributos terminam com a palavra "Atributo" para distingui-los de outros itens no .NET Framework. No entanto, você não precisa especificar o sufixo de atributo ao usar atributos no código. Por exemplo, [DllImport] é equivalente a [DllImportAttribute], mas DllImportAttribute é o nome real do atributo no .NET Framework.
Parâmetros de atributo
Muitos atributos têm parâmetros, que podem ser posicionais, sem nome ou nomeados. Quaisquer parâmetros posicionais devem ser especificados numa determinada ordem e não podem ser omitidos; Os parâmetros nomeados são opcionais e podem ser especificados em qualquer ordem. Os parâmetros posicionais são especificados primeiro. Por exemplo, estes três atributos são equivalentes:
<DllImport("user32.dll")>
<DllImport("user32.dll", SetLastError:=False, ExactSpelling:=False)>
<DllImport("user32.dll", ExactSpelling:=False, SetLastError:=False)>
O primeiro parâmetro, o nome da DLL, é posicional e sempre vem em primeiro lugar; os outros são nomeados. Nesse caso, ambos os parâmetros nomeados têm como valor padrão false, por isso podem ser omitidos. Consulte a documentação do atributo individual para obter informações sobre valores de parâmetros padrão.
Destinos de atributos
O destino de um atributo é a entidade à qual o atributo se aplica. Por exemplo, um atributo pode se aplicar a uma classe, um método específico ou um assembly inteiro. Por padrão, um atributo se aplica ao elemento que ele precede. Mas você também pode identificar explicitamente, por exemplo, se um atributo é aplicado a um método, ou ao seu parâmetro, ou ao seu valor de retorno.
Para identificar explicitamente um destino de atributo, use a seguinte sintaxe:
<target : attribute-list>
A lista de possíveis valores de target é mostrada na tabela a seguir.
| Valor alvo | Aplica-se a |
|---|---|
assembly |
Montagem completa |
module |
Módulo de montagem atual (que é diferente de um módulo do Visual Basic) |
O exemplo a seguir mostra como aplicar atributos a assemblies e módulos. Para obter mais informações, consulte Atributos comuns (Visual Basic).
Imports System.Reflection
<Assembly: AssemblyTitleAttribute("Production assembly 4"),
Module: CLSCompliant(True)>
Usos comuns para atributos
A lista a seguir inclui alguns dos usos comuns de atributos no código:
Marcando métodos usando o atributo
WebMethodem serviços Web para indicar que o método deve ser chamável sobre o protocolo SOAP. Para obter mais informações, consulte WebMethodAttribute.Descrevendo como organizar parâmetros de método ao interoperar com código nativo. Para obter mais informações, consulte MarshalAsAttribute.
Descrevendo as propriedades COM para classes, métodos e interfaces.
Chamando código não gerenciado usando a classe DllImportAttribute.
Descrevendo sua montagem em termos de título, versão, descrição ou marca registrada.
Descrever o processo de determinar quais membros de uma classe devem ser serializados para persistência.
Descrever como mapear entre membros de classe e elementos XML para serialização XML.
Descrever os requisitos de segurança para os métodos.
Especificação das características utilizadas para reforçar a segurança.
Controlar as otimizações pelo compilador just-in-time (JIT) para que o código permaneça fácil de depurar.
Obter informações sobre o chamador de um método.
Seções relacionadas
Para obter mais informações, consulte: