Sobes.tech
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.