Junior — Middle
Jak je určena doba existence objektu po jeho registraci v kontejneru pro vkládání závislostí?
sobes.tech AI
Odpověď od AI
Doba existence objektu v kontejneru závislostí (DI) je určena jeho životním cyklem (lifetime), který je nastaven při registraci.
Hlavní možnosti životního cyklu v C# (například v Microsoft.Extensions.DependencyInjection):
- Transient: nový objekt je vytvořen při každé žádosti.
- Scoped: jeden objekt je vytvořen na rozsah (například na HTTP požadavek v webové aplikaci).
- Singleton: jeden objekt je vytvořen při první žádosti a žije do ukončení aplikace.
Příklad registrace služby s různými dobami života:
services.AddTransient<IMyService, MyService>(); // nový objekt při každé volání
services.AddScoped<IMyService, MyService>(); // jeden objekt na relaci/žádost
services.AddSingleton<IMyService, MyService>(); // jeden objekt po celou dobu běhu
Tedy, doba existence objektu závisí na zvoleném životním cyklu při registraci v DI kontejneru.