Sobes.tech
Junior — Middle

Kun je meer dan één implementatie van een interface registreren in één container?

sobes.tech AI

Antwoord van AI

Ja, in Dependency Injection (DI) containers in C# kunnen meerdere implementaties van dezelfde interface worden geregistreerd. Dit wordt meestal gedaan wanneer je verschillende gedragopties nodig hebt die op basis van de context kunnen worden gekozen.

Bijvoorbeeld, in Microsoft.Extensions.DependencyInjection kun je meerdere implementaties registreren zoals:

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

Wanneer IEnumerable<IService> wordt aangevraagd, geeft de container alle geregistreerde implementaties terug. Als alleen IService wordt aangevraagd, wordt de laatst geregistreerde implementatie geretourneerd (dit hangt af van de specifieke DI-container).

Om een specifieke implementatie te kiezen, worden vaak genummerde registraties of factories gebruikt, of je injecteert IEnumerable<IService> en kiest programmatisch de benodigde implementatie.