Junior — Middle
Je možné v rámci jedného kontajnera zaregistrovať viac ako jednu implementáciu rozhrania?
sobes.tech AI
Odpoveď od AI
Áno, v kontajneroch závislostnej injekcie (DI) v C# je možné zaregistrovať niekoľko implementácií toho istého rozhrania. Zvyčajne sa to robí, keď je potrebné mať rôzne možnosti správania, ktoré je možné vyberať podľa kontextu.
Napríklad v Microsoft.Extensions.DependencyInjection môžete zaregistrovať viacero implementácií takto:
services.AddTransient<IService, ServiceImplementationA>();
services.AddTransient<IService, ServiceImplementationB>();
Keď sa požaduje IEnumerable<IService>, kontajner vráti všetky zaregistrované implementácie. Ak sa požaduje len IService, vráti sa posledná zaregistrovaná implementácia (závisí od konkrétneho DI-kontajnera).
Na výber konkrétnej implementácie sa často používajú pomenované registrácie alebo továrne, alebo sa injektuje IEnumerable<IService> a programovo sa vyberá požadovaná implementácia.