Kann man in einem einzigen Container mehr als eine Implementierung einer Schnittstelle registrieren?
sobes.tech KI
Antwort von AI
Ja, in Dependency Injection (DI) Containern in C# können mehrere Implementierungen einer Schnittstelle registriert werden. Dies wird normalerweise gemacht, wenn verschiedene Verhaltensweisen benötigt werden, die je nach Kontext ausgewählt werden können.
Zum Beispiel kann man in Microsoft.Extensions.DependencyInjection mehrere Implementierungen so registrieren:
services.AddTransient<IService, ServiceImplementationA>();
services.AddTransient<IService, ServiceImplementationB>();
Wenn IEnumerable<IService> angefordert wird, gibt der Container alle registrierten Implementierungen zurück. Wenn nur IService angefordert wird, wird die zuletzt registrierte Implementierung zurückgegeben (abhängig vom spezifischen DI-Container).
Zur Auswahl einer bestimmten Implementierung werden oft benannte Registrierungen oder Fabriken verwendet, oder man injiziert IEnumerable<IService> und wählt die benötigte Implementierung programmatisch aus.