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.