Peut-on enregistrer plus d'une implémentation d'une interface dans un seul conteneur?
sobes.tech IA
Réponse de l'IA
Oui, dans les conteneurs d'injection de dépendances (conteneurs DI) en C#, il est possible d'enregistrer plusieurs implémentations d'une même interface. Cela est généralement fait lorsque vous avez besoin de différentes options de comportement qui peuvent être choisies en fonction du contexte.
Par exemple, dans Microsoft.Extensions.DependencyInjection, vous pouvez enregistrer plusieurs implémentations ainsi :
services.AddTransient<IService, ServiceImplementationA>();
services.AddTransient<IService, ServiceImplementationB>();
En demandant IEnumerable<IService>, le conteneur renverra toutes les implémentations enregistrées. Si vous demandez simplement IService, la dernière implémentation enregistrée sera renvoyée (cela dépend du conteneur DI spécifique).
Pour choisir une implémentation spécifique, on utilise souvent des enregistrements nommés ou des factories, ou on injecte IEnumerable<IService> et on choisit l'implémentation nécessaire par programmation.