Sobes.tech
Junior — Middle

Cum se determină perioada de existență a unui obiect după înregistrarea sa în containerul de injecție a dependențelor?

sobes.tech AI

Răspuns de la AI

Durata de existență a unui obiect într-un container de injecție a dependențelor (DI) este determinată de ciclul său de viață (lifetime), care este stabilit în timpul înregistrării.

Principalele opțiuni de ciclu de viață în C# (de exemplu, în Microsoft.Extensions.DependencyInjection):

  • Transient: o nouă instanță este creată la fiecare solicitare.
  • Scoped: o instanță este creată pe domeniu (de exemplu, pe solicitare HTTP într-o aplicație web).
  • Singleton: o instanță este creată la prima solicitare și trăiește până la încheierea aplicației.

Exemplu de înregistrare a unui serviciu cu diferite durate de viață:

services.AddTransient<IMyService, MyService>(); // obiect nou de fiecare dată
services.AddScoped<IMyService, MyService>();   // un obiect pe sesiune/solicitare
services.AddSingleton<IMyService, MyService>(); // un obiect pe toată durata de viață

Prin urmare, durata de existență a unui obiect depinde de ciclul de viață ales la înregistrare în containerul DI.