Extension Methods no VB.NET.

 

Olá, neste artigo vou falar um pouco sobre Extenção de Métodos no VB.net.

 

Afinal, o que é isso?

É a possibilidade de estender classes já existente no .Net  framework.

 

Imagine que você precise criar um método para checar se o email de um usuário é válido. Normalmente você criaria um método em sua Camada de Negócios para isso, mais pense se a própria classe string  já implementasse isso....

 

É isso que vamos fazer neste exemplo.

 

Antes de começar temos que atentar para alguns detalhes:

 

No VB.net, os métodos de extensão só podem ser criados em módulos;

 

O atributo usado para identificar um método de extenção é:    <Extension()>;

 

Este atributo está dentro do namespace: System.Runtime.CompilerServices;

 

 

 Agora vamos abrir um novo projeto no Visual Studio;

 

Escolha VB como linguagem e selecione WindowsApplication.

 

Vamos adicionar um novo módulo em Add New Item\ Module.

Coloque o nome de Extension.vb (o nome é indiferente)

Vamos criar um método para validar se o formato de email digitado é válido usando expressões regulares.

 

Para isso, digite o seguinte código:

 

Imports System.Runtime.CompilerServices

Imports System.Text.RegularExpressions

 

Module Extension

    <Extension()> Public Function IsValidEmail(ByVal s As String) As _ Boolean

        If Not (Regex.IsMatch(s, _

                "^[a-z0-9\._\-]+\@+[a-z0-9\._\-]+\.[a-z]+$")) Then

            Return False

        End If

        Return True

    End Function

 

End Module

 

Esté é o nosso método que irá estender a classe string, note que o compilador sabe o tipo que queremos estender pelo tipo passado no parâmetro.

 

 

Vamos criar uma interface bem simples com:

1 TextBox;

1 Button;

1 Label;

 

Vamos usar o seguinte código no evento Click do botão:

 

 

Private Sub Button1_Click(ByVal sender As System.Object, _

                ByVal e As System.EventArgs) Handles Button1.Click

 

        Dim email As String = TextBox1.Text

 

        MessageBox.Show(IIf(email.IsValidEmail(), _

                "Email Válido", "Email Inválido"), _

                "Menssagem", MessageBoxButtons.OK)

 

End Sub

 

 

Criamos uma string com o nome de email, e agora ela possui o método IsValidEmail() que nos retorna um Boleano.Todas as classes que pertecerem a este projeto terão a classe string extendida.

Executando o projeto você poderá conferir seu funcionamento.

*Os Extension Methods vieram para dar suporte ao LINQ, assim como as Lambda Expresion.

 

Podemos Concluir dizendo que o LINQ  nos trouxe muitos beneficios, dentre eles um bem interessante é o Extension Methods, que pode nos economizar um bom tempo na hora da codificação de nossas aplicações e vale a pena estudá-lo.