Desenvolvimento - C#
C# - Métodos de Extensão
Apesar do Visual Studio 2008 e o C# 3.0 com seus novos recursos estarem no mercado a bastante tempo, poucos desenvolvedores utilizam os novos recursos da linguagem, o primeiro recurso que vou mostrar aqui são os métodos de extensão (Extension Methods).
por Márcio Fábio AlthmannApesar do Visual Studio 2008 e o C# 3.0 com seus novos recursos estarem no mercado a bastante tempo, poucos desenvolvedores utilizam os novos recursos da linguagem, o primeiro recurso que vou mostrar aqui são os métodos de extensão (Extension Methods), principalmente por que no próximo artigo utilizo métodos de extensão então vou passar uma introdução sobre o assunto.
Basicamente, os Métodos de Extensão permitem adicionarmos métodos as nossas classes ou até mesmo classes do .Net Framework sem precisarmos modificar diretamente a classe em questão.
Para entendermos melhor o conceito vamos analisar o código abaixo.
1: static void Main(string[] args)
2: {
3: string idade = "25";
4: int total = int.Parse(idade);
5: }
No código acima, declarei idade como string, e se eu preciso passar idade para um inteiro eu tenho que fazer uma conversão, nesse caso utilizei int.Parse(), o primeiro método de extensão que vamos criar é um ToInt32() para strings. Lembrando do conceito, vamos adicionar um método chamado ToInt32() para todo tipo string do .Net, vou dar esse nome só para seguir o padrão do .Net.
Para já tirar uma dúvida comum, a nossa classe com os métodos de extensão não precisam estar no mesmo projeto em que iremos utilizá-los, pensando no caso da empresa possuir um framework de desenvolvimento, então crie um novo projeto no Visual Studio do tipo Console Application e de o nome de MetodosExtensao.Testes, na mesma solução adicione um projeto do tipo Class Library com o nome MetodosExtensao.Core, delete a class1 gerada automaticamente e adicione uma nova classe chamada Extensoes. Seu Solution Explorer ficará como o da imagem abaixo:
Agora vamos analisar a classe Extensoes que está no projeto MetodosExtensoes.Core, veja o código abaixo.
1: public static class Extensoes
2: {
3: public static int ToInt32(this string valor)
4: {
5: int resultado = 0;
6: int.TryParse(valor, out resultado);
7: return resultado;
8: }
9: }
Primeiro regra que devemos prestar atenção é que a classe e os métodos devem ser estáticos. O ponto chave para seus métodos de extensão funcionarem é a palavra this na assinatura do método, ela deve ser adicionada antes do tipo que será extendido, no exemplo acima this string quer dizer que o método vai ser adicionado no tipo string.
Agora para utilizarmos nosso método de extensão no nosso projeto, adicione referência do projeto MetodosExtensao.Core ao projeto MetodoExtensao.Testes. Para isso clique com o botão direito no projeto MetodosExtensao.Testes e clique em Add Reference. Na janela de referências, clique na guia Projects selecione o projeto MetodosExtensao.Core e clique em Ok.
Agora vamos adicionar aos using da nossa classe que queremos utilizar nossos métodos de extensão. Veja abaixo.
1: using MetodosExtensao.Core;
Veja abaixo o nosso primeiro código utilizando nosso método de extensão.
1: static void Main(string[] args)
2: {
3: var idade = "25";
4: var total = idade.ToInt32();
5: }
Um última dica é que podemos facilmente identificar métodos de extensão no intelisense do Visual Studio, eles possuem um ícone diferenciado dos métodos default da classe, com uma seta para baixo, reparem na imagem abaixo que além do método que criamos o tipo string tem outros métodos de extensão.
Esse foi um pequeno exemplo do que podemos fazer com os métodos de extensão, existem novos recursos do C# 3.0 que ainda vou abordar aqui no site, antes de passar para os recursos do C# 4.0 que em breve será lançado junto com o Visual Studio 2010.
Abraços a todos.