Sobes.tech
Junior — Middle

Bir konteynerda bir interfeysning bir nechta amalga oshirilishini ro'yxatdan o'tkazish mumkinmi?

sobes.tech AI

AIdan javob

Ha, C# da Dependency Injection (DI) konteynerlarida bir interfeysning bir nechta amalga oshirilishini ro'yxatdan o'tkazish mumkin. Bu odatda, kontekstga qarab tanlash mumkin bo'lgan turli xildagi xulq-atvor variantlariga ehtiyoj bo'lsa amalga oshiriladi.

Masalan, Microsoft.Extensions.DependencyInjection'da quyidagicha ro'yxatdan o'tkazish mumkin:

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

IEnumerable<IService> so'rov qilinsa, konteyner barcha ro'yxatdan o'tgan amalga oshirishlarni qaytaradi. Agar faqat IService so'raladigan bo'lsa, oxirgi ro'yxatdan o'tgan amalga oshirish qaytariladi (bu, aniq DI-konteynerga bog'liq).

Aniq amalga oshirishni tanlash uchun odatda nomlangan ro'yxatdan o'tkazish yoki fabrikalar ishlatiladi, yoki IEnumerable<IService> ni inject qilib, kerakli amalga oshirishni dasturiy tanlash mumkin.