Novidades no C# 3.0: Métodos de Extensão (Extension Methods)

Publicado por Marcos Dell Antonio em 15/10/2007 | .NET

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:

Método estático para validar um e-mail

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

Validação de e-mail utilizando método estático

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:

Validação de e-mail utilizando método de extensão

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:

Declaração de um método de extensão (extension method)

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

Utilização de um método de extensão (extension method)

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.

Deixe o seu comentário

Anúncios

Anúncio provido pelo BuscaPé