Compartilhar via


Visão geral de atributos (Visual Basic)

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.

Para obter mais informações, consulte:

Consulte também