Sobes.tech
Junior — Middle

Qual é a diferença entre o escopo de objetos Scoped e Transient no contexto da Injeção de Dependências?

sobes.tech IA

Resposta da IA

No contexto da Injeção de Dependências em C#, o escopo Scoped e Transient determinam o tempo de vida dos objetos criados:

  • Transient: o objeto é criado toda vez que é solicitado. Isso significa que, a cada chamada de serviço ou injeção, uma nova instância será criada.

  • Scoped: o objeto é criado uma única vez durante o tempo de uma solicitação (scope). Em aplicações web, isso geralmente significa que durante uma mesma solicitação HTTP, será usada a mesma instância, mas para outra solicitação, uma nova será criada.

Exemplo:

services.AddTransient<IMyService, MyService>(); // novo objeto a cada solicitação
services.AddScoped<IMyService, MyService>();   // um objeto por requisição HTTP

Assim, Scoped é útil para manter estado durante uma única requisição, enquanto Transient é adequado para serviços stateless, onde uma nova instância é necessária a cada vez.