Skip to content

Instantly share code, notes, and snippets.

@nathy-mesquita
Last active February 18, 2024 22:07
Show Gist options
  • Save nathy-mesquita/afc55dfb32529ddcc37e68ca781c0dc2 to your computer and use it in GitHub Desktop.
Save nathy-mesquita/afc55dfb32529ddcc37e68ca781c0dc2 to your computer and use it in GitHub Desktop.
Conhecendo a Injeção de Dependência

Injeção de Dependência

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.

Ciclo de vida do objeto!

  • Singleton: uma instância por aplicação;
  • Scoped: uma instância por requisição;
  • Transient: uma instância por classe;

@nathy-mesquita
Copy link
Author

nathy-mesquita commented Jun 30, 2021

Utilizando o AddScoped Instância para toda requisição

Startup

public void ConfigureServices(IServiceCollection services)
{
    services.AddScoped<ExampleClass>(e => new ExampleClass { Name = "Initial Stage Scoped" });
	[...]
}

Executando a aplicação

ProjectsController

image

UsersController

image

Isso mostra que o tempo de vida dele é apenas por requisições.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment