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.
Os atributos fornecem um método avançado de associação de 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 reflexão. Para obter mais informações, consulte Reflexão (Visual Basic).
Os atributos têm as seguintes propriedades:
Os atributos adicionam metadados ao seu programa. Metadado é informação sobre os tipos definidos em um programa. Todos os assemblies .NET contêm um conjunto de metadados especificado que descreve os tipos e os membros de tipo definidos no assembly. Você pode adicionar atributos personalizados para especificar qualquer informação adicional necessária. 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 metadados em outros programas usando reflexão. Para obter mais informações, consulte Acessar 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 ele é válido. No Visual Basic, um atributo é colocado entre colchetes angulares (<>). Ele deve aparecer imediatamente antes do elemento ao qual é aplicado, 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 atributo 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 em uma 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, esses 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 DLL, é posicional e sempre vem primeiro; os outros são nomeados. Nesse caso, ambos os parâmetros nomeados têm valor padrão false, de modo que podem ser omitidos. Consulte a documentação do atributo individual para obter informações sobre valores de parâmetro 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, a um método específico ou a 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 retornado.
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 assembly 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
WebMethod
nos serviços Web para indicar que o método deve ser chamado pelo protocolo SOAP. Para obter mais informações, consulte WebMethodAttribute.Descrevendo como organizar os 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 seu conjunto de componentes em termos de título, versão, descrição ou marca registrada.
Descrever quais membros de uma classe devem ser serializados para persistência.
Descrever como fazer mapeamento entre nós XML e membros de classe para serialização de XML.
Descrevendo os requisitos de segurança para métodos.
Especificando características usadas para impor a segurança.
Gerenciar as otimizações do compilador JIT (just-in-time) 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: