RSS2.0

Extension Methods

sexta-feira, 3 de abril de 2009

Olá pessoal tudo certo? Bom hoje vou falar um pouco sobre os Exensions Methods.

Os extensions methods é uma novidade que veio no C# 3.0. Os Extensions Methods permitem que o desenvolvedor adicione métodos a um tipo determinado, sem precisar alterar o código fonte original ou criar um tipo derivado, como era feito antes do surgimento do Extension Methods.

Os extensions methods possuem as mesmas caractristicas de um método estático, porém sua utilização é semelhante a de um método de instância.

Como criar um Extension Method?

A criação de um Extension Method é bem simples, segue abaixo um exemplo de código para a criação de um extension method (clique na imagem para ampliar):






Neste exemplo eu declarei uma classe estática MeusExtMetods sendo ela pertencente ao namespace System.

Nada impede que você use um namespace da sua aplicação mesmo, eu adoto por padrão colocar eles com o namespace System sempre que desejo que ele seja visivel para todas as classes.

Pois como, acredito, nem é preciso lembrar só posso "ver" os métodos e etc existentes nos namespaces referenciados.



O método acima é simples, ele converte para inteiro qualquer tipo passado a ele, sabendo-se que tudo é objeto, então qualquer instancia de uma váriavel sendo ela float, string, etc. seria acessivel para o método de extensão da classe.



Como utilizar?



Você pode utilizar os Ext. Methods de duas maneiras



string str = "1";
int convertido = str.ToInt32();



OU



string str = "1";
int convertido = MeusExtMethods.ToInt32(str);




Das duas maneiras ele funcionária, mas o correto é que se use a primeira opção, já que é ao que se propõe os Ext. Methods.



Usar Extensions Methods substitui um antigo processo que podia se dar de duas formas, era criado um método estático ou não em uma classe que tivesse a função desejada e esse método era executado na segunda forma de chamada apresentada para os ext. methods, ou se criava um tipo derivado como mostrado abaixo:



O qual seria chamado no caso da seguinte forma:


MeuTipoDerivado obj = "1";
int convertido = obj.ToInt32();



Esse recurso foi largamente utilizado para disponibilizar os métodos que trabalham com LINQ na versão mais recente do framework .net.

Aqui estou usando um exemplo bem simples que realiza a conversão do tipo object para int, mas você pode usar os ext. methods da maneira que desejar, seguindo esta mesma idéia.

Bom galera por hora é isso, desculpa os conteúdos básicos postados até agora, mas é que até agora não tive uma idéia muito boa para postar, mas para não deixar o blog vazio vamos postando, os Easy.NET =).

Abraços até a próxima.

2 comentários:

1000ton disse...

extension methods é um dos recursos mais mió de bom q o c# tem.

Todos os programadores tem q ter uma classe com seus extensions, ao menos o ToInt tem q ter

uhauhauha

D13G1NN disse...

Cara obrigado pela dica.
Iniciei o curso de programação no curso adv, www.cursoadv.com. e estou aprendendo muito.