Sobes.tech
Junior — Middle

Kako se određuje rok trajanja objekta nakon njegove registracije u kontejneru za ubrizgavanje zavisnosti?

sobes.tech АИ

Одговор од АИ

Vreme postojanja objekta u kontejneru za ubrizgavanje zavisnosti (DI) određuje njegov životni ciklus (lifetime), koji se postavlja prilikom registracije.

Glavne opcije životnog ciklusa u C# (na primer, u Microsoft.Extensions.DependencyInjection):

  • Transient: novi primerak se kreira pri svakom zahtevu.
  • Scoped: jedan primerak se kreira po opsegu (na primer, po HTTP zahtevu u veb aplikaciji).
  • Singleton: jedan primerak se kreira pri prvom zahtevu i traje do završetka rada aplikacije.

Primer registracije servisa sa različitim vremenima trajanja:

services.AddTransient<IMyService, MyService>(); // novi objekat svaki put
services.AddScoped<IMyService, MyService>();   // jedan objekat po sesiji/zahtevu
services.AddSingleton<IMyService, MyService>(); // jedan objekat tokom celog vremena rada

Dakle, vreme postojanja objekta zavisi od izabranog životnog ciklusa pri registraciji u DI kontejneru.