Лучшее место для конфигурации / модулей Fluent IOC (в настоящее время пробует Ninject)

Я изо всех сил пытаюсь найти лучшее место для размещения моих "Модулей" конфигурации Ninject (место, где указаны привязки типов). Я надеюсь, что мне просто не хватает какой-то очевидной уловки, поскольку это начинает превращаться для меня в препятствие для меня при использовании плавной конфигурации (и, следовательно, Ninject):

В простом веб-стеке, содержащем три отдельных проекта: Web, BusinessLogic, Доступ к данным. Я не хочу, чтобы веб-уровень напрямую ссылался на уровень DataAccess , но я не вижу способа обойти это, потому что:

  • Если я помещу модуль конфигурации DataAccess в DataAccess слой , Мне нужно сослаться на уровень DataAccess, чтобы я мог получить доступ к модулю конфигурации при создании экземпляра ядра Ninject на веб-уровне

  • . Если я помещаю модуль конфигурации DataAccess на веб-уровень , я должен ссылаться на уровень DataAccess чтобы иметь доступ к типам, которые я хочу привязать

  • Если я помещаю модуль конфигурации DataAccess в отдельный проект конфигурации , я получаю проблемы с циклическими ссылками при попытке указать привязки как для веб-уровня, так и для уровня DataAccess .

Частично преимущество IOC состоит в том, чтобы позволить слабую связь, но, насколько я понимаю, использование Ninject потребовало бы от меня добавления большего количества прямых ссылок на проекты, которые у меня есть в настоящее время. Что мне не хватает?

6
задан Ruben Bartelink 25 August 2012 в 06:59
поделиться