O que é?
Uma técnica que permite a inserção de um objeto em outro, geralmente através do construtor, criando a relação de dependência.
O método que utilizamos para adicionar configurações para o Controller é um exemplo de injeção de Dependência.
Técnica muito utilizada para melhorar a qualidade de código em refatorações, e torná-lo mais testável.
Injeção de dependência trata os problemas da seguinte maneira:
- O uso de uma interface ou classe base para abstrair a implementação da dependência.
- Registrando a dependência em um contêiner de serviço. O ASP.NET Core fornece um contêiner de serviço interno, o IServiceProvider. Normalmente, os serviços são registrados no método do Startup. ConfigureServices aplicativo.
- Injeção do serviço no construtor da classe na qual ele é usado. A estrutura assume a responsabilidade de criar uma instância da dependência e de descartá-la quando não for mais necessária.
Singleton
: uma instância por aplicação;Scoped
: uma instância por requisição;Transient
: uma instância por classe;
Demo
Criamos uma classe para exemplificar o comportamento
ExampleClass
No construtor das Controllers passamos no contrutor a classe criada:
ProjectsController
UsersController