Sobes.tech
Junior — Middle

¿Se puede registrar más de una implementación de una interfaz en un solo contenedor?

sobes.tech AI

Respuesta de la IA

Sí, en los contenedores de inyección de dependencias (contenedores DI) en C# se pueden registrar varias implementaciones de una misma interfaz. Esto generalmente se hace cuando se necesitan diferentes opciones de comportamiento que se pueden seleccionar según el contexto.

Por ejemplo, en Microsoft.Extensions.DependencyInjection, se pueden registrar varias implementaciones así:

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

Al solicitar IEnumerable<IService>, el contenedor devolverá todas las implementaciones registradas. Si se solicita simplemente IService, se devolverá la última implementación registrada (esto depende del contenedor DI específico).

Para elegir una implementación concreta, a menudo se utilizan registros con nombres o fábricas, o se inyecta IEnumerable<IService> y se selecciona la implementación necesaria programáticamente.