Junior — Middle
Hogyan határozzák meg egy objektum élettartamát a függőség-injektálási konténerben való regisztráció után?
sobes.tech MI
Válasz az MI-től
Egy objektum létezési ideje (lifetime) a dependency injection (DI) konténerben a regisztráció során beállított életciklustól (lifetime) függ.
A C#-ban (például a Microsoft.Extensions.DependencyInjection-ben) a fő életciklus lehetőségek:
- Transient: minden kérésnél új példány jön létre.
- Scoped: egy példány jön létre egy adott scope-ban (például egy webalkalmazásban minden HTTP-kérésnél).
- Singleton: az első kéréskor jön létre, és az alkalmazás végéig él.
Példa egy szolgáltatás különböző életidejű regisztrálására:
services.AddTransient<IMyService, MyService>(); // minden alkalommal új objektum
services.AddScoped<IMyService, MyService>(); // egy objektum minden session/ kérés esetén
services.AddSingleton<IMyService, MyService>(); // egy objektum az egész alkalmazás során
Így az objektum létezési ideje a regisztrációkor kiválasztott életciklustól függ a DI-konténerben.