Cómo evitar el acoplamiento con un contenedor de IoC

Estoy en el proceso de desarrollar un marco extensible usando DI e IoC. Los usuarios deben poder anular la funcionalidad existente dentro del marco colocando sus propias implementaciones en el contenedor.

¿Cómo puedo permitir que los usuarios hagan esto sin exigirles que sepan qué contenedor de IoC estoy usando?

Mi solución actual a mitad de camino es estructurar mis ensamblajes de la siguiente manera:

1) Definir ensamblados abstractos que contengan solo interfaces.

2) Definir conjuntos concretos que implementen estas interfaces. Los usuarios pueden definir los suyos para anular la funcionalidad existente.

3) Definir los enlaces del contenedor en conjuntos separados; es decir, un conjunto de encuadernación por conjunto de hormigón.

Esto significa que los ensamblajes de concreto no están acoplados con un contenedor de IoC particular, y se cerrarían contra cambios si usara un contenedor diferente. Sin embargo, los usuarios aún deben saber qué contenedor está usando mi marco para escribir los ensamblajes de enlace, y tendrían que liberar nuevos ensamblajes de enlace si cambiara el contenedor de IoC (es decir, de Ninject a Spring).

¿Me estoy perdiendo de algo

Respuestas a la pregunta(5)

Su respuesta a la pregunta