Aplicação de Atributos

Você aplica atributos adicionando blocos de atributos para programar elementos como propriedades, métodos, eventos, classes e assembles.Um bloco de atributos consiste de chaves angulares ("< >") fechando uma lista de declarações de atributos separadas por vírgula.Uma declaração de atributo consiste de modificadores opcionais de atributos como Module ou Assembly, um nome de atributo, uma lista (possivelmente sobrecarregada) de parâmetros posicionais, e uma lista de argumentos nomeados opcionalmente.Você deve colocar atributos com modificadores numa seção de atributos no topo do arquivo fonte.Por exemplo, o seguinte código configura um atributo assembly que define o tipo para o assembly, e um atributo de módulo que indica que o módulo é compatível com a CLS ( Common Language Specification):

Imports System.Reflection
<Assembly: AssemblyTitleAttribute("Production assembly 4"), _
Module: CLSCompliant(True)> 

Atributos de assembly podem também ser aplicados por meios do arquivo AssemblyInfo.vb, que é adicionado aos projetos automaticamente pela interface do usuário Visual Studio.Esse arquivo contém atributos a nível de assembly com valores padrão ou vazios.

Quando aplicado a elementos de programas como propriedades, atributos precedem o elemento.Por exemplo, o código a seguir aplica uma atributo a uma definição de classe:

<CustomAttr(Update:=True)> Class Class1

Por convenção, todo nome de atributo termina com a palavra "Atributo" para distingui-los de outros itens no .NET Framework.No entanto, você não precisa especificar o sufixo de atributo quando usando atributos.Por exemplo, você tinha um atributo chamado CustomAttrAttribute, quando especificando <CustomAttr(Update:=True)> é equivalente a especificar <CustomAttrAttribute(Update:=True)>.

Argumentos de Atributo

Atributos são argumentos opcionais, necessários, posicionais, e nomeados do mesmo modo que objetos usam esses tipos de argumentos.Argumentos posicionais são argumentos que são especificados para que sejam declarados para o construtor de um atributo.Por exemplo, o código a seguir chama o construtor Sub New de atributos com dois valores:

<CustomAttr(True, False)> Class Class1

Argumentos passados para Sub New em classes de atributos são geralmente usados para inicializar valores de campos e propriedades.

Você pode usar argumentos nomeados para configurar diretamente o valor de propriedades e campos.Você especifica um argumento nomeado adicionando ":=" ao nome do argumento, seguido pelo valor sendo especificado.Diferentemente de argumentos posicionais, argumentos nomeados podem ser especificados em qualquer ordem.Por exemplo, o código a seguir configura o valor True para o campo Update, e False para o campo Keep:

<CustomAttr(Update:=True, Keep:=False)> Class Class1
Observação:

Argumentos de tributos possuem uma importante diferença em relação a argumentos usados com chamadas de métodos normais.Você deve usar argumentos posicionais para argumentos que são usados com o Sub New Construtor de classes de atributo. Argumentos nomeados podem ser usados para configurar valores de campos e propriedades de classes de atributos.

Argumentos necessários são aqueles que devem ser sempre especificados.Argumentos opcionais são aqueles que podem ser deixados usados como uma vírgula como preenchimento ( quando usando argumentos opcionais) ou simplesmente omitidos ( quando usando argumentos nomeados).

Argumentos de atributos devem ser expressões constantes.

Exemplos de Atributos

Os seguintes procedimentos fornecem exemplos de declarações de atributos.

Para usar o atributo MarshalAs para controlar como parâmetros são lidos

  1. Adicione uma declaração Imports para o namespace System.Runtime.InteropServices no topo de seu código:

    Imports System.Runtime.InteropServices
    
  2. Prefixe parâmetros com o atributo MarshalAsAttribute e especifique o tipo de dados que o destino requer.Por exemplo, o seguinte código lê dois parâmetros como ponteiro do tipo long para uma string ( LPStr ) numa função da para a API do Windows.

    Declare Auto Sub CopyFile Lib "Kernel32.Lib" ( _
       <MarshalAs(UnmanagedType.LPWStr)> ByVal existingfile As String, _
       <MarshalAs(UnmanagedType.LPWStr)> ByVal newfile As String, _
       ByVal failifexists As Boolean _
    )
    

A Common Language Runtime usa o atributo MarshalAsAttribute para determinar como um parâmetro deve ser lido entre o código gerenciado do Visual Basic e o não gerenciado numa chamada à API do Windows.

Para expor um método a clientes Web remotos

  1. Do menu Arquivo, clique Projeto, selecione o modelo Serviço WEB ASP.NET e adicione uma instrução Imports para o namespace System.Web:

    Imports System.Web.Services
    
  2. Defina uma método e use o atributo WebMethodAttribute para torná-lo acessível a cliente Web remotos:

    <WebMethod()> Public Function HelloWorld() As String
        HelloWorld = "Hello World..."
    End Function
    

Fazer um método para Serviço Web XML Public não é suficiente para expô-lo aos clientes Web.Você deve aplicar explicitamente o atributo WebMethodAttribute num método antes que ele possa ser chamado por um cliente Web remoto.

Consulte também

Tarefas

Como: Definir seus próprios atributos

Conceitos

Visão Geral de Atributos em Visual Basic

Usos comuns para atributos

Passagem de Argumentos por Posição e Nome

Referência

WebMethodAttribute

Declaração Imports (Tipo e Namespace .NET)

MarshalAsAttribute

System.Web

Outros recursos

Atributos personalizados no Visual Basic