sábado, 13 de agosto de 2011

Extensions Methods e Namespaces

Eu utilizo Extensions Methods para praticamente duas finalidades:

  • Implementar uma funcionalidade não existente para um objeto;
  • Dar uma maior coesão a um trecho de código;

Como exemplo de coesão, veja o trecho de código abaixo:

img01

Para deixar o código um pouco mais coeso pode implementado da seguinte forma:

image

Para criar uma classe que implemente o código que queremos é muito simples:

image

Agora pra utiliza-lo basta fazer o seguinte:

image

Pois é, o Visual Studio já me avisou que não encontrou o meu método de extensão. Isso se dá por que esqueci de fazer o using para o namespace onde esta a extensão, e isso aconteceu por que o intellisense  não me deu essa opção.
Quando criamos um extension method dentro de uma namespace precisamos lembrar de fazer o using manualmente toda vez que queremos utiliza-lo, o que nem sempre é legal.

O que podemos fazer nesse caso?

Duas opções:

  • Não definir uma namespace para a sua classe que contém os métodos de extensão;
  • Definir o namespace igual ao objeto ao qual o método esta atrelado.

Fica ai a dica, agora é só mandar bala nos extensions methods.