Sobes.tech
Junior — Middle

Como é determinado o período de existência de um objeto após o seu registo no contêiner de injeção de dependências?

sobes.tech IA

Resposta da IA

A duração de um objeto num contêiner de injeção de dependências (DI) é determinada pelo seu ciclo de vida (lifetime), que é definido durante o registo.

As principais opções de ciclo de vida em C# (por exemplo, no Microsoft.Extensions.DependencyInjection):

  • Transient: uma nova instância é criada a cada solicitação.
  • Scoped: uma instância é criada por escopo (por exemplo, por solicitação HTTP numa aplicação web).
  • Singleton: uma instância é criada na primeira solicitação e vive até ao fim da aplicação.

Exemplo de registo de um serviço com diferentes tempos de vida:

services.AddTransient<IMyService, MyService>(); // novo objeto a cada vez
services.AddScoped<IMyService, MyService>();   // um objeto por sessão/solicitação
services.AddSingleton<IMyService, MyService>(); // um objeto durante toda a duração da aplicação

Assim, a duração de um objeto depende do ciclo de vida escolhido ao registar no contêiner DI.