Sobes.tech
Junior — Middle

Оё дар доираи як контейнер метавон бештар аз як варианти иҷрои интерфейсро сабт кард?

sobes.tech AI

Ҷавоб аз AI

Бале, дар контейнерҳои вурудоти вобастагӣ (DI-контейнерҳо) дар C# метавон чандин иҷрои як интерфейсро сабт кард. Ин одатан вақте истифода мешавад, ки ба вариантҳои гуногуни рафтор ниёз аст, ки метавонанд дар асоси контекст интихоб шаванд.

Масалан, дар Microsoft.Extensions.DependencyInjection, шумо метавонед чандин иҷроҳоро чунин сабт кунед:

services.AddTransient<IService, ServiceImplementationA>();
services.AddTransient<IService, ServiceImplementationB>();

Ҳангоми дархости IEnumerable<IService>, контейнер ҳамаи иҷроҳои сабтшударо бармегардонад. Агар танҳо IService талаб карда шавад, иҷрои охирин сабтшуда баргардонида мешавад (ин вобаста аз контейнери DI махсус аст).

Барои интихоби иҷрои махсус, одатан сабтҳои номгузорӣ ё фабрикаҳо истифода мешаванд, ё IEnumerable<IService> вуруд карда мешавад ва ба таври барномавӣ иҷрои зарурӣ интихоб мешавад.