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.