No entiendo dónde crear contenedores IoC en la arquitectura del sistema

Digo que tengo los siguientes 4 ensambles .net:

Winforms UILógica de negocioSQL Server Data Access (implementando un IRepository) Interfaces comunes (definición de IRepository, etc.)

Mi lógica de negocios (2) realiza llamadas a la capa de acceso a datos (3) a través de IRepository (definido en 4) utilizando la inyección de dependencia del constructor. Sin embargo, cuando cedo un objeto comercial, necesito pasarlo a un repositorio real. Hago esto haciendo que una clase singleton en mi capa de lógica de negocios devuelva el objeto concreto actualmente en uso implementando IRepository. Estoy llegando a la conclusión de que esto es algo malo, ya que mi capa de lógica de negocios ahora tiene que hacer referencia a 3 así como a 4.

Creo que necesito un Contenedor de IoC, pero la pregunta es dónde lo creo / pongo, ya que parece que donde sea que creo esto (1 - UI). también deberá contener una referencia a 3 (Acceso a datos de SQL Server). ¿No estoy simplemente moviendo el problema en lugar de lograr un desacoplamiento real?

¿Creo el IoC Container en la interfaz de usuario? O exponerlo a través de otro nuevo ensamblaje.

(Estoy usando C #, .net 3.5 y AutoFac)

Gracias

Respuestas a la pregunta(5)

Su respuesta a la pregunta