È possibile registrare più di una implementazione di un'interfaccia all'interno di un singolo contenitore?
sobes.tech AI
Risposta dell'AI
Sì, nei contenitori di dependency injection (DI) in C# è possibile registrare più implementazioni di un'interfaccia. Questo viene solitamente fatto quando si desiderano diverse opzioni di comportamento che possono essere scelte in base al contesto.
Ad esempio, in Microsoft.Extensions.DependencyInjection, puoi registrare più implementazioni così:
services.AddTransient<IService, ServiceImplementationA>();
services.AddTransient<IService, ServiceImplementationB>();
Richiedendo IEnumerable<IService>, il contenitore restituirà tutte le implementazioni registrate. Se si richiede semplicemente IService, verrà restituita l'ultima implementazione registrata (dipende dal contenitore DI specifico).
Per scegliere un'implementazione specifica, si usano spesso registrazioni con nome o factory, oppure si inietta IEnumerable<IService> e si seleziona l'implementazione desiderata programmaticamente.