Oct 15 2007
Novidades no C# 3.0: Métodos de Extensão (Extension Methods)
Um dos novos recursos com maior expressão no C# 3.0 e .NET 3.5 é a possibilidade de criar métodos de extensão (extension methods) para um tipo já existente.
Para validar um endereço de e-mail, por exemplo, a forma mais comum hoje em dia é através de uma nova classe com um método estático, como demonstrado abaixo:

E a validação é feita da seguinte forma:

Através de um método de extensão a classe String pode ser estendida para suportar a validação de e-mail, como demonstrado na figura abaixo:

Para que o método ValidarEmail fique disponível na classe String, ele deve ser definido como estático e a palavra reservada this deve ser adicionada à frente do primeiro parâmetro, fazendo com que o seu tipo seja estendido e passe a suportar o método em questão. Veja:

Feito isto, basta dar um using no namespace da classe onde o método foi implementado e ele já estará disponível no intellisense:

Uma característica muito importante dos métodos de extensão é que eles podem ser adicionados a tipos base. A classe object, por exemplo, pode ser estendida para ter um método qualquer e consequentemente ele estará disponível para todas as outras classes do framework e da aplicação.
Para quem já conhece o LINQ, vale a pena salientar que grande parte das operações disponíveis por ele (Max, Where, Average, etc) foram feitas através dos extension methods.






