Extension Method é um recurso presente desde o C# 3.0 e que facilita bastante o uso do OCP – Open Closed Principle.
Os extension methods permitem que você adicione comportamentos em classes existentes sem precisar modificá-las. Os extension methods são um tipo especial de método estático, porém são chamados como se fossem métodos de instância na classe estendida.
Para o código escrito em .NET não há nenhuma diferença entre chamar um extension method ou os métodos realmente definidos em uma classe.
Como um recurso tão importante como este pode passar desconhecido por diversos desenvolvedores? É por este motivo que escrevi este artigo.
No SOLID os extension methods são perfeitos para aplicar OCP – Open Closed Principle de uma forma muito natural e proporcionando um código de baixo acoplamento.
Caso você não conheça todos os princípios do SOLID assista este tutorial completo.
Para demonstrar mais facilmente como utilizar os extension methods e aplicá-los ao OCP eu gravei um vídeo de 18 minutos onde rapidamente explico tudo.
* Assine meu canal no Youtube 🙂
O código fonte desta solução está disponível no GitHub
Referências
Se você estiver interessado em conhecer mais e aprender como desenvolver aplicações com uma arquitetura responsável utilizando DDD, TDD, BDD, aplicando os princípios SOLID, diversos Design Patterns e escrevendo testes de unidade conheça meus cursos:
Vamos continuar a troca de experiências, deixe seu comentário abaixo, se gostou e concorda com o artigo compartilhe com seus colegas para transmitirmos o conhecimento para o máximo de pessoas possíveis.
Infelizmente este é um recurso que realmente passa despercebido por muitos desenvolvedores. Eu mesmo só descobri os benefícios de usar Extension Methods há uns dois anos.
Parabéns pelo artigo Eduardo.
Já faço uso deste recurso há um bom tempo e agora que estou acompanhando seus artigos sobre SOLID, achei interessante esta abordagem.
Bom artigo, simples e claro.
Parabéns!
Extension Methods é uma ótima funcionalidade do .NET, porém não tem nada a ver com OCP. OCP esta ligado diretamente ao polimorfismo. O principio propõem tornar uma classe flexível ao ponto de “estar fechada para modificação” (o que não quer dizer que a mesma nunca mais deve ser alterada, refatorar faz parte da POO) e essa flexibilidade deve ser atingida através de abstrações, utilizando herança ou composição, ficando assim “aberta para extensão”. Sugiro a leitura: https://en.wikipedia.org/wiki/Open/closed_principle
Oh mano, sem querer tirar, mas… tomar como base referencias do WikiPedia é complicado né?
Todo seu comentário só me fez crer que Extension Methods facilita mesmo o OCP…
Parabéns pelo artigo Eduardo!
{}’s
Excelente artigo, rápido, direto ao ponto e com bons exemplos.
Já tinha visto outros exemplos de Extension Methods, e já cheguei a usar uma vez. Realmente são uma mão na roda. Mas o pessoal tem que saber criar isso com moderação também. Pode se por exemplo criar uma classe abstrata e no método fazer algo do tipo (this object obj)… consequentemente, pra qualquer um que herde de object, o método vai estar lá disponível.
No mais, obrigado pelos vídeos e artigos. Abrs!
Bom dia, cara tenho uma dúvida, poderiamos estender o SOLID para a classe Context. a idéia é tipo, tenho um cliente que se cadastrou em minha plataforma, ao invés de manter os dados desde cliente em uma única base de dados, o VS executar um Migration com todos os SEED desde cliente, gerando uma nova base para cliente, e simplesmente passar o caminho dessa nova base para o construtor do Context.