Sobes.tech
Junior — Middle

Чӣ тавр мӯҳлати мавҷудияти объект пас аз сабти номаш дар контейнери ворид кардани вобастагиҳо муайян карда мешавад?

sobes.tech AI

Ҷавоб аз AI

Вақти мавҷудияти объект дар контейнери воридкунии вобастагиҳо (DI) бо давомнокии ҳаёт (lifetime) муайян карда мешавад, ки ҳангоми сабт кардан муайян карда мешавад.

Вариантҳои асосии давомнокии ҳаёт дар C# (масалан, дар Microsoft.Extensions.DependencyInjection):

  • Transient: нусхаи нав дар ҳар дархост эҷод мешавад.
  • Scoped: як нусха барои доира (масалан, барои дархости HTTP дар барномаи веб).
  • Singleton: як нусха дар аввал эҷод мешавад ва то анҷоми барнома зинда мемонад.

Масалан, сабти як хидмат бо вақтҳои гуногуни зиндагӣ:

services.AddTransient<IMyService, MyService>(); // объект нав ҳар дафъа
services.AddScoped<IMyService, MyService>();   // як объект барои сессия/дархост
services.AddSingleton<IMyService, MyService>(); // як объект дар тамоми вақти кор

Аз ин рӯ, вақти мавҷудияти объект ба варианти интихобшудаи давомнокии ҳаёт дар сабт дар контейнери DI вобаста аст.