O que são Extension Methods

Extension Methods

Os Extension Methods ou métodos de extensão são recursos disponíveis no c# a partir da versão 3, eles permitem que um tipo existente seja estendido com novos métodos sem a necessidade de se derivar ou mesmo modificar o tipo original.

Vantagem de utilizar

Com os extension methods você pode criar métodos para um tipo mesmo que não tenha os fontes, podendo criar novos métodos para aquele tipo.

Como criar

Para definir um extension method é simples, basta criar um método do tipo estático de uma classe estática, onde deve ser passado como primeiro parâmetro o modificador this.

Exemplo

Abaixo vamos criar um exemplo de utilização do extension method, onde vamos criar um método que retorna a quantidade de vogais em uma string.

Passo 1 – definir uma classe estática com um método estático e no mesmo vamos passar o tipo como parâmetro usando o this:

public static class Extension
{
public static int ContarVogais(this string str){
return str.ToLower().Count(ch => ch.Equals('a') || ch.Equals('e') || ch.Equals('i') || ch.Equals('o') || ch.Equals('u'));
}
}

Dessa forma criamos uma extensão para o tipo string, onde agora temos um método ContarVogais que retorna um inteiro.

Passo 2 – para utilizar o método não precisa nada de mais, basta denir uma string que o mesmo já vai está disponível para uso, abaixo tem um exemplo de aplicação console que lê a partir da entrada do usuário:

static void Main(string[] args)
{
Console.Write("Digite um texto: ");

var str = Console.ReadLine();

Console.WriteLine("Quantidade de vogais: "+str.ContarVogais());

Console.ReadKey();
}

Simples né, não tem muita dificuldade para fazer seu uso, lembrando somente que se método foi implementado em uma class library separada, tem que fazer o using da mesma para ter acesso ao método de extensão.

Curiosidade

Quando vamos utilizar os métodos de extensão podemos ver que ele fica no intellisense do visual studio como abaixo:

Extension Method 1

Podemos observar que aparecem 2 ícones diferentes quando o intellisense aparece:

Extension Method 2

O ícone com uma seta para baixo nos mostra que o método é de extensão, o segundo sem nada mostra que é um método da classe, assim podemos observar que vários dos métodos que estão disponíveis no c# são de extensão, no próprio exemplo podemos ver que o Concat e o Contais são extensões.

Referência

https://msdn.microsoft.com/pt-br/library/bb383977.aspx

Posted in .NET, Blog, C# and tagged , , .

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *