Fala galera!

Sabe aquele projeto antigo, gigante, que não dá pra refazer? Será que dá pra colocar Injeção de dependência nele?

Vamos pegar um cenário que deve ser muito comum e tentar fazer injeção de dependência nele:

Um projeto com 3 camadas, Model, Data Access e Business Logic:

  1. Vamos criar um projeto, pode ser em ASP .NET MVC, sem autenticação, sem nada.

  2. Vamos adicionar um projeto Windows Class Library chamado Core, onde vamos colocar o “Acesso a dados”.

  3. Vamos adicionar adicionar o AutoFac na camada MVC. Pelo Package Manager Console:

  1. Agora vamos criar nosso Core. Separei o Core em duas pastas: Data e Services. Dentro da pasta Data ficará os Models, BusinessLogic e o DataAccess.

Neste projeto não criei o DataAccess para ficar mais simples o exemplo.

<a href="https://i0.wp.com/www.leonardohofling.com/blog/wp-content/uploads/2015/09/CoreFiles.png” data-rel="lightbox-image-0” data-rl_title=”” data-rl_caption=”” title="“>

Os services foram criados para não acessar diretamente o BusinessLogic pela camada Web, poderia até ser colocado em um projeto separado.

Core/Data/Models/BaseEntity.cs

Core/Data/Models/Example.cs

Core/Data/ExampleBL.cs

Core/Data/IBusinessLogic.cs

Core/Data/Services/IExampleService.cs

Core/Data/Services/ExampleService.cs

  1. Agora vamos configurar a aplicação Web.

Adicione o projeto Core como referência para podermos usá-lo.

Depois abra o arquivo Global.asax.cs e adicione no final do método Application_Start():

  1. Para testar o funcionamento, vamos modificar o HomeController.

Vai ser injetado no construtor do Controller o nosso service.

Vamos alterar também a View para mostrar o resultado:

Resultado:

<a href="https://i2.wp.com/www.leonardohofling.com/blog/wp-content/uploads/2015/09/Screenshot_3.png” data-rel="lightbox-image-1” data-rl_title=”” data-rl_caption=”” title="“>

Código fonte:

https://github.com/leonardohof/AutoFacDaoExample</a>

Até a próxima!