Sobes.tech
Junior — Middle

Կարո՞ղ է մեկ կոնտեյներում գրանցել մի քանի տարբերակ իրականացման մեկ ինտերֆեյսի համար։

sobes.tech AI

Պատասխան AI-ից

Այո, C#-ի կախվածության ներդրման (DI) կոնտեյներով կարող եք գրանցել մի քանի իրականացման նույն ինտերֆեյսի համար: Դա սովորաբար կատարվում է, երբ անհրաժեշտ է ունենալ տարբեր վարքագծի տարբեր տարբերակներ, որոնք կարող են ընտրվել կոնտեքստից կախված:

Օրինակ, Microsoft.Extensions.DependencyInjection-ում կարող եք գրանցել մի քանի իրականացումներ՝ հետևյալ կերպ՝

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

Երբ պահանջվում է IEnumerable<IService>, կոնտեյները կվերադարձնի բոլոր գրանցված իրականացումները: Եթե պահանջվում է պարզապես IService, կվերադարձվի վերջին գրանցված իրականացումը (այսը կախված է կոնկրետ DI կոնտեյներից):

Հատուկ իրականացման ընտրության համար հաճախ օգտագործվում են անվանված գրանցումներ կամ գործարաններ, կամ ներդրվում է IEnumerable<IService> և ծրագրային կերպով ընտրվում է անհրաժեշտ իրականացումը։