Мое приложение включает в себя ряд внутренних сборок (включая уровень репозитория данных Entity Framework), которые используются рядом интерфейсных сборок (включая службу Windows и веб-приложение MVC3).
Насколько я понимаю, процесс привязки Ninject заключается в том, что каждая сборка, содержащая вводимые типы, также должна содержать модуль Ninject, который определяет привязки по умолчанию для этих типов. Затем набор определенных модулей будет загружен в ядро Ninject потребляющих сборок.
Однако я сталкиваюсь с проблемами, поскольку требуемый объем привязки не всегда согласован. Например, мой проект MVC должен быть привязан к контексту данных InRequestScope
, тогда как служба Windows привязывается к тому же классу InThreadScope
.
Я, очевидно, могу решить эту проблему, переместив все модули во внешние проекты и, таким образом, сохранить отдельные копии каждого модуля для каждого сценария использования, но это кажется хакерским, поскольку он дублирует большую часть содержимого модуля в нескольких проектах.
Есть ли лучший способ размещения модулей в многоуровневом приложении и как я могу согласовать это с моей потребностью в привязке различий между проектами?
Большое спасибо за ваши предложения,
Тим