Junior — Middle
Bog'lanishlarni injektsiya qilish konteynerida ro'yxatdan o'tgach, ob'ektning mavjud bo'lish muddati qanday aniqlanadi?
sobes.tech AI
AIdan javob
Obyektning mavjudlik muddati (lifetime) bog'liq bo'lib, u dependency injection (DI) konteynerida ro'yxatdan o'tkazilganda uning hayot davri (lifetime) bilan belgilanadi.
C# da asosiy hayot davri variantlari (masalan, Microsoft.Extensions.DependencyInjection da):
- Transient: har so'rovda yangi nusxa yaratiladi.
- Scoped: har bir kontekst uchun (masalan, veb-ilovada HTTP so'rovi uchun) bir nusxa yaratiladi.
- Singleton: birinchi so'rovda yaratiladi va ilova tugaguncha yashaydi.
Turli hayot davri bilan xizmatni ro'yxatdan o'tkazish misoli:
services.AddTransient<IMyService, MyService>(); // har safar yangi ob'ekt
services.AddScoped<IMyService, MyService>(); // sessiya/so'rov uchun bir ob'ekt
services.AddSingleton<IMyService, MyService>(); // butun ish davomida bir ob'ekt
Shunday qilib, obyektning mavjudlik muddati DI konteyneriga ro'yxatdan o'tkazishda tanlangan hayot davriga bog'liq.