Sobes.tech
Junior — Middle

Kaip nustatomas objekto egzistavimo laikas po jo registracijos priklausomybių injekcijos konteineryje?

sobes.tech AI

Atsakymas iš AI

Objekto egzistavimo laikas (lifetime) yra nustatomas pagal jo gyvenimo ciklą (lifetime), kuris yra nustatomas registruojant.

Pagrindiniai gyvenimo ciklo variantai C# (pavyzdžiui, Microsoft.Extensions.DependencyInjection):

  • Transient: naujas egzempliorius sukuriamas kiekvieno užklausos metu.
  • Scoped: vienas egzempliorius sukuriamas kiekvienam kontekstui (pavyzdžiui, HTTP užklausai interneto programoje).
  • Singleton: vienas egzempliorius sukuriamas pirmojo užklausos metu ir gyvena iki programos pabaigos.

Pavyzdys, kaip registruoti paslaugą su skirtingu gyvavimo laiku:

services.AddTransient<IMyService, MyService>(); // naujas objektas kiekvieną kartą
services.AddScoped<IMyService, MyService>();   // vienas objektas sesijos/užklausos metu
services.AddSingleton<IMyService, MyService>(); // vienas objektas viso darbo laiko metu

Taigi, objekto egzistavimo laikas priklauso nuo pasirinkto gyvenimo ciklo registruojant DI konteineryje.