Sobes.tech
Junior — Middle

Ako sa určuje doba existencie objektu po jeho registrácii v kontajneri na vkladanie závislostí?

sobes.tech AI

Odpoveď od AI

Dĺžka existencie objektu v kontajneri závislostí (DI) je určená jeho životným cyklom (lifetime), ktorý sa nastaví pri registrácii.

Hlavné možnosti životného cyklu v C# (napríklad v Microsoft.Extensions.DependencyInjection):

  • Transient: nový inštancia sa vytvorí pri každom požiadavke.
  • Scoped: jedna inštancia sa vytvorí pre rozsah (napríklad pre HTTP požiadavku v webovej aplikácii).
  • Singleton: jedna inštancia sa vytvorí pri prvej požiadavke a žije do ukončenia aplikácie.

Príklad registrácie služby s rôznymi časmi života:

services.AddTransient<IMyService, MyService>(); // nový objekt pri každom volaní
services.AddScoped<IMyService, MyService>();   // jeden objekt na reláciu/žiadanie
services.AddSingleton<IMyService, MyService>(); // jeden objekt počas celej doby behu

Takže, dĺžka existencie objektu závisí od zvoleného životného cyklu pri registrácii v DI kontejnere.