VB .NET -  Você sabe o que é e para que serve um Atributo ?


Neste artigo vou apresentar os conceitos sobre Atributos na linguagem VB .NET, sua definição e afinal para que serve um atributo.

Metadados

Vamos começar apresentando o conceito de metadados. Afinal o que é são metadados ?

Podemos pensar em Metadados como sendo o sangue da plataforma. NET. Muitos dos recursos que usamos todos os dias durante o tempo de projeto, durante o tempo de compilação, e durante o tempo de execução, se baseiam na presença de metadados. Os Metadados permitem a um Assembly e os tipos dentro do Assembly se autodescreverem.

Assim, os metadados são informações sobre os dados, ou seja, informações sobre os tipos, o código, assembly e assim por diante - que é armazenada junto com seu programa.

Nota: Metadado = informação sobre uma informação.

E onde entram os atributos ?

Podemos adicionar metadados em seu código através dos atributos.

Atributos

Os Atributos são um mecanismo para a adição de metadados, tais como instruções do compilador e outros dados sobre seus dados, métodos e classes, para o próprio programa.

Os Atributos são inseridos nos metadados e são visíveis através ILDasm e outras ferramentas para leitura de metadados.

Assim, um atributo é um objeto que representa os dados que você deseja associar com um elemento no seu programa. O elemento ao qual você anexa um atributo é conhecido como o target (alvo) desse atributo.

Exemplos :

1- atributo: <Serializable()>

Pode ser associado a uma classe para indicar que a classe alvo pode ser serializada (persistida).

2- atributo: <WebMethod()>

Pode ser associado a um método para expor o método como um Web Service XML.

3- atributo:  <Obsolete()>

Pode ser associado com tipos marcando-os como desatualizados.

4- atributo: <CLSCompliant(True)>

Pode ser associado a um assembly, module, tipos e membros para tornar o código compatível com outra linguagem.

Depois que um atributo estiver associado a uma entidade do programa, o atributo pode ser consultado em tempo de execução usando uma técnica chamada Reflection.

Atributos podem ser de dois tipos: intrínsecos e personalizado.

Se você procurar na CLR, você vai encontrar um grande número de atributos. Alguns atributos são aplicados a uma assembly, outros a uma classe ou interface, e alguns, como o <WebMethod()>, a membros da classe.

Atributos têm as seguintes propriedades:

Para exemplificar eu vou mostrar o uso do atributo <Obsolete()>.

Recursos usados:

Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.

Criando a solução no VS Community

Abra o VS Community 2015 e clique em New Project;

Selecione a linguagem Visual Basic e o template Console Application;

Informe o nome VBNET_Atributos e clique no botão OK;

No menu Project clique em Add Class e informe o nome Calculadora.vb e inclua o código abaixo nesta classe:

 

Esta classe possui dois métodos Somar() sobrecarregados onde um recebe dois parâmetros e outro pode receber qualquer quantidade de parâmetros.

Observe que o atributo <Obsolete()> foi aplicado ao método Somar(n1,n2) que recebe dois parâmetros para indicar que ela esta desatualizada (Deprecated). E isso esta sendo indicado pelo compilador.

O atributo Absolete() possui 3 construtores:

1- O construtor sem parâmetros
2- O construtor onde passamos uma mensagem como parâmetro
3- O construtor onde passamos uma mensagem e um booleano indicando se o método vai ser considerado um erro(true) ou não (false).

Agora ao tentar usar o método Somar(n1,n2) iremos receber um alerta do compilador informando que o método esta desatualizado.

Podemos fornecer mais informações aos usuários da classe Calculadora usando o construtor do atributo <Obsolete(message as String)> que agora inclui uma mensagem ao usuário :

 <Obsolete("Use o método Somar(byval numeros as List(Of integer)")>
    Public Shared Function Somar(ByVal n1 As Integer, ByVal n2 As Integer) As Integer
        Return n1 + n2
  End Function

Agora ao tentar utilizar o método iremos obter o seguinte resultado:

Mesmo com o alerta ainda podemos usar o método em ambos os casos anteriores.

Para evitar que o um usuário utilize o método da classe vamos usar outro construtor do atributo <Obsolete(message as string, [error] as Boolean)>:


Agora ao compilar o projeto você vai receber uma aviso de que existe um erro no método Somar() e que você deve usar a outra sobrecarga do método:

Dessa forma você não vai conseguir usar essa sobrecarga do método Somar() pois isso foi definido no atributo <Obsolete()> aplicado ao método.

Para cada atributo que você desejar usar consulte a documentação correspondente.

Aguarde em breve um artigo sobre como criar atributos personalizados.

Porque todo aquele que faz o mal odeia a luz, e não vem para a luz, para que as suas obras não sejam reprovadas.
Mas quem pratica a verdade vem para a luz, a fim de que as suas obras sejam manifestas, porque são feitas em Deus.

João 3:20,21

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti