Архитектура модуля NInject кажется полезной, но я волнуюсь, что она немного запутается.
Как вы организовываете свои модули? На какой сборке вы их держите и как вы решаете, какие проводки идут в каком модуле?
Архитектура модуля NInject кажется полезной, но я волнуюсь, что она немного запутается.
Как вы организовываете свои модули? На какой сборке вы их держите и как вы решаете, какие проводки идут в каком модуле?
Каждая подсистема получает модуль. Конечно, определение того, что требует категоризация как "подсистемы", зависит...
В некоторых случаях ответственность за некоторые привязки повышается до более высокого уровня, поскольку подсистема/компонент нижнего уровня не в состоянии принять окончательное авторитетное решение - в некоторых случаях это может быть достигнуто путем передачи параметров в Модуль.
Отвечая на мой собственный пост через пару лет с помощью NInject.
Вот как я организовываю свои NInjectModules, используя Книжный магазин в качестве примера:
Это означает, что каждый проект в системе поставляется с одним или несколькими модулями NInject, которые знают, как настроить привязки для этих классов проектов.
В большинстве случаев отдельное приложение не хочет вносить существенные изменения в модули ввода по умолчанию, предоставляемые проектом. Например, если я создаю небольшое приложение WinForm, которое должно импортировать проект DataAccess, обычно я также хочу, чтобы весь проект Repository < > classes привязывался к связанным с ним интерфейсам IRepository < > .
В то же время нет ничего, что вынуждало бы отдельное приложение использовать конкретный модуль инъекции. Приложение может создать свой собственный модуль впрыска и игнорировать модули по умолчанию, предоставляемые проектом, который он импортирует. Таким образом, система по-прежнему остается гибкой и развязанной.