Junior — Middle
Мӯҳлати мавҷудияти объект пас аз ворид кардани он тавассути механизми Dependency Injection чӣ гуна муайян карда мешавад?
sobes.tech AI
Ҷавоб аз AI
Мӯҳлати зиндагии объекте, ки тавассути Dependency Injection (DI) эҷод шудааст, бо вақти зиндагӣ (lifetime) муайян карда мешавад, ки ҳангоми сабти хизмат дар контейнери DI муайян карда мешавад. Дар C# (масалан, дар ASP.NET Core) се намуди асосии вақти зиндагӣ мавҷуд аст:
- Transient — нусхаи нав дар ҳар дархости хизмат эҷод мешавад.
- Scoped — як нусха барои доира (масалан, барои дархости HTTP) эҷод мешавад ва дар доираи он такрор истифода мешавад.
- Singleton — як нусха дар аввалин дархост эҷод мешавад ва то анҷоми барнома зинда мемонад.
Масалан, сабт:
services.AddTransient<IMyService, MyService>();
services.AddScoped<IMyService, MyService>();
services.AddSingleton<IMyService, MyService>();
Бинобар ин, вақти зиндагии объект ба вақти зиндагии интихобшуда дар вақти сабт дар контейнери DI вобаста аст.