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.