Sobes.tech
Junior — Middle

Lze v rámci jednoho kontejneru zaregistrovat více než jednu implementaci rozhraní?

sobes.tech AI

Odpověď od AI

Ano, v kontejnerech závislostní injekce (DI) v C# lze registrovat několik implementací stejného rozhraní. Obvykle se to dělá, když je potřeba mít různé varianty chování, které lze vybírat podle kontextu.

Například v Microsoft.Extensions.DependencyInjection lze registrovat více implementací takto:

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

Po požadavku na IEnumerable<IService> kontejner vrátí všechny registrované implementace. Pokud požadujete pouze IService, vrátí se poslední registrovaná implementace (závisí na konkrétním DI kontejneru).

Pro výběr konkrétní implementace se často používají pojmenované registrace nebo továrny, nebo se injektuje IEnumerable<IService> a programově se vybírá požadovaná implementace.