Sobes.tech
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.