Կարո՞ղ է մեկ կոնտեյներում գրանցել մի քանի տարբերակ իրականացման մեկ ինտերֆեյսի համար։
sobes.tech AI
Պատասխան AI-ից
Այո, C#-ի կախվածության ներդրման (DI) կոնտեյներով կարող եք գրանցել մի քանի իրականացման նույն ինտերֆեյսի համար: Դա սովորաբար կատարվում է, երբ անհրաժեշտ է ունենալ տարբեր վարքագծի տարբեր տարբերակներ, որոնք կարող են ընտրվել կոնտեքստից կախված:
Օրինակ, Microsoft.Extensions.DependencyInjection-ում կարող եք գրանցել մի քանի իրականացումներ՝ հետևյալ կերպ՝
services.AddTransient<IService, ServiceImplementationA>();
services.AddTransient<IService, ServiceImplementationB>();
Երբ պահանջվում է IEnumerable<IService>, կոնտեյները կվերադարձնի բոլոր գրանցված իրականացումները: Եթե պահանջվում է պարզապես IService, կվերադարձվի վերջին գրանցված իրականացումը (այսը կախված է կոնկրետ DI կոնտեյներից):
Հատուկ իրականացման ընտրության համար հաճախ օգտագործվում են անվանված գրանցումներ կամ գործարաններ, կամ ներդրվում է IEnumerable<IService> և ծրագրային կերպով ընտրվում է անհրաժեշտ իրականացումը։