Sexta-feira, 06 de fevereiro de 2009 às 09h00

C# 3.0 Extension Methods

Extension Methods é um recurso que quem costuma trabalhar em linguagens de script, como Ruby, já está mais acostumado. Consiste em "inserir" métodos em objetos já compilados, como uma string, por exemplo. Sim, esqueça a sua classe StringHelper ou StringUtil, agora os métodos utilitários que você sempre quis poderão ser inseridos diretamente na fonte.

Vamos à prática: primeiro vou mostrar como um extension é declarado, depois o exemplo de uso. Vou fazer um exemplo que não é tão útil, mas a intenção aqui é apenas mostrar a funcionalidade.

Imaginemos que temos URLs em formato de string na nossa aplicação e precisamos ter o conteúdo destas URLs. Vou criar um extension no objeto string que lê essa URL e retorna o seu conteúdo. Vamos à implementação:

static class Extensions
{
    public static string ReadUrl(this string str)
    {
        return new StreamReader(WebRequest.Create(str).GetResponse().GetResponseStream()).ReadToEnd();
    }
}

view raw This Gist brought to you by GitHub.

Agora o exemplo de como utilizar o método que criei:

string responseBody = "http://www.google.com".ReadUrl();

É fácil criar um extension. Primeiro precisamos de uma classe e um método static. O método extension tem uma peculiaridade, o primeiro parâmetro possui a palavra chave this seguido pelo objeto no qual o extension será "inserido". A partir deste parâmetro, os subsequentes serão efetivamente utilizados na chamada do método. Esse primeiro parâmetro é muito importante, perceba que ele representa a instância do próprio objeto. No exemplo, a string responseBody vai ter o conteúdo HTML da página inicial do Google.

À primeira impressão parece uma implementação complicada, mas nada mais que alguns minutos serão necessários para se familiarizar com isso.

Eu sempre fui fã das linguagens mais dinâmicas, e nessa característica as linguagens de script são a Disney. Esse recurso adicionado ao C# 3.0 nos dá flexibilidade para criar métodos que vão organizar bastante o nosso código. Em breve coloco mais artigos sobre .NET.

Nenhum comentário até agora

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Sobre o Autor
Wagner Andrade é um entusiasta da programação de computadores. Focado na WEB nos últimos anos, trabalha na Icompany desenvolvendo soluções focadas no produto ERP da empresa. Já trabalhou com diversas linguagens e tecnologias diferentes, sendo os destaques: PL/SQL, Java, ASP.NET e Ruby. É técnico em telecomunicações e formando em Segurança da Informação. Mantêm o blog www.wagnerandrade.com/blog.
3G

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.