Visão geral dos atributos (Visual Basic)
Os atributos fornecem um método poderoso de associar metadados, ou informações declarativas, com código (conjuntos, tipos, métodos, propriedades, etc.). Depois de um atributo ser associado a uma entidade do programa, o atributo pode ser consultado no tempo de execução utilizando uma técnica chamada reflexão. Para mais informações, consulte Reflexão (Visual Basic).
Os atributos têm as seguintes propriedades:
Os atributos adicionam metadados ao seu programa. Metadados são informações sobre os tipos definidos num programa. Todos os conjuntos .NET contêm um conjunto especificado de metadados que descreve os tipos e membros do tipo definidos na montagem. Pode adicionar atributos personalizados para especificar qualquer informação adicional que seja necessária. Para mais informações, consulte, criando atributos personalizados (Visual Basic).
Pode aplicar um ou mais atributos a conjuntos inteiros, módulos ou elementos de programa menores, tais como classes e propriedades.
Os atributos podem aceitar argumentos da mesma forma que métodos e propriedades.
O seu programa pode examinar os seus próprios metadados ou metadados noutros programas utilizando a reflexão. Para obter mais informações, consulte aceder a atributos utilizando reflexão (Visual Basic).
Usando atributos
Os atributos podem ser colocados na maioria de qualquer declaração, embora um atributo específico possa restringir os tipos de declarações em que é válido. Em Visual Basic, um atributo é incluído em suportes angulares (<>). Deve comparecer imediatamente perante o elemento ao qual é aplicado, na mesma linha.
Neste exemplo, o SerializableAttribute atributo é utilizado 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 numa 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 de tal atributo multiuso é ConditionalAttribute:
<Conditional("DEBUG"), Conditional("TEST1")>
Sub TraceMethod()
End Sub
Nota
Por convenção, todos os nomes de atributos terminam com a palavra "Atributo" para distingui-los de outros itens do .NET Framework. No entanto, não precisa de especificar o sufixo do atributo ao utilizar atributos em 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. Os 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 DLL, é posicional e vem sempre em primeiro lugar; os outros são nomeados. Neste caso, ambos os parâmetros nomeados não são falsos, para que possam ser omitidos. Consulte a documentação do atributo individual para obter informações sobre os valores dos parâmetros predefinidos.
Atribuir Alvos
O alvo de um atributo é a entidade a que o atributo se aplica. Por exemplo, um atributo pode aplicar-se a uma classe, a um método particular ou a uma montagem inteira. Por predefinição, um atributo aplica-se ao elemento que precede. Mas 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 alvo de atributo, utilize a seguinte sintaxe:
<target : attribute-list>
A lista de valores possíveis target
é mostrada na tabela seguinte.
Valor de destino | Aplica-se a |
---|---|
assembly |
Montagem inteira |
module |
Módulo de montagem atual (que é diferente de um Módulo Visual Basic) |
O exemplo a seguir mostra como aplicar atributos a conjuntos 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 seguinte inclui algumas das utilizações comuns de atributos em código:
Métodos de marcação que utilizam o
WebMethod
atributo nos serviços Web para indicar que o método deve ser chamado ao longo do protocolo SOAP. Para obter mais informações, consulte WebMethodAttribute.Descrevendo como marejar parâmetros do método ao interoperar com código nativo. Para obter mais informações, consulte MarshalAsAttribute.
Descrevendo as propriedades da COM para classes, métodos e interfaces.
Chamando código não gerido usando a DllImportAttribute classe.
Descrevendo a sua montagem em termos de título, versão, descrição ou marca registada.
Descrevendo quais membros de uma classe para serializar para persistência.
Descrevendo como mapear entre membros da classe e nós XML para a serialização de XML.
Descrevendo os requisitos de segurança para os métodos.
Especificar as características utilizadas para impor a segurança.
Controlar as otimizações pelo compilador just-in-time (JIT) para que o código permaneça fácil de depurar.
Obtenção de informação sobre o chamador para um método.
Secções Relacionadas
Para obter mais informações, consulte: