Partilhar via


Visão geral de atributos (Visual Basic)

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 WebMethod em 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.

Para obter mais informações, consulte:

Ver também