Autofac — Framework de Injeção de dependência
O Autofac é um dos principais frameworks de injeção de dependência atualmente, ele é fácil de usar, possui bastante libs que integram com outras tecnologias em .NET, como por exemplo: WebAPI, MVC, ASP NET Core, WCF e etc. Possui diversos recursos que permite, por exemplo ele pode substituir em alguns casos uma classe de Factory e/ou AbstractFactory e o principal ele é Open Source e de graça para utilizar. Muitos exemplo que a Microsoft disponibiliza utiliza Autofac. Esse framework é compatível com .NET Framework 4.5.1 ou superior, .NET Core, ASP NET Core e ASP NET MVC e WebAPI.
Nesse artigo vou criar um Console, o código esta disponível no Github, para utilizar esse framework primeiro devemos baixar sua dependência via Nuget: https://www.nuget.org/packages/Autofac/
O código acima mostra um uso básico do Autofac. Nele podemos observar qual será o comportamento do Autofac para algumas situações comuns, como por exemplo, para tipos de scope diferente: Singleton( uma instância do objeto na vida do Container), LifeScope (Por scope) e por Dependência (toda vez é gerada uma instância nova para esse objeto). E também demonstrando como utilizar a próprias classes e/ou utilização de interface para o Container resolver.
Para começar é necessário instâncias a classe ContainerBuilder, ela é onde nos iremos adicionar todas as nossas dependências e depois gerar um IContainer e depois um ILifeScope. Para adicionar uma dependência de uma é necessário chamar o método RegisterType<T> onde T é a sua class, depois chamar o método AsSelf , outra opção é chamar o método As<T> onde T pode ser uma interface, e por fim falar qual é o tipo de ciclo de vida daquele objeto, no caso desse exemplo, colocar Singleton, outras opções são PerDependency e PerLifeScope. Como podemos observar o Autofac possui uma sintaxes bem fluida.
Ao rodar o código obtivemos o seguinte resultado:
Conclusão
O Autofac é um framework bem fácil de usar e muito extensivas, existem diversos framework que se integram com ele, como por exemplo a Moq. E por causa dos recurso ele é bastante recomendo para a utilização em sistema enterprise