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.