Подтвердить что ты не робот

Как вы организовываете свои модули NInject?

Архитектура модуля NInject кажется полезной, но я волнуюсь, что она немного запутается.

Как вы организовываете свои модули? На какой сборке вы их держите и как вы решаете, какие проводки идут в каком модуле?

4b9b3361

Ответ 1

Каждая подсистема получает модуль. Конечно, определение того, что требует категоризация как "подсистемы", зависит...

В некоторых случаях ответственность за некоторые привязки повышается до более высокого уровня, поскольку подсистема/компонент нижнего уровня не в состоянии принять окончательное авторитетное решение - в некоторых случаях это может быть достигнуто путем передачи параметров в Модуль.

Ответ 2

Отвечая на мой собственный пост через пару лет с помощью NInject.

Вот как я организовываю свои NInjectModules, используя Книжный магазин в качестве примера:

  • BookStoreSolution
    • Domain.csproj
    • Services.csproj
      • CustomerServicesInjectionModule.cs
      • PaymentProcessingInjectionModule.cs
    • DataAccess.csproj
      • CustomerDatabaseInjectionModule.cs
      • BookDatabaseInjectionModule.cs
    • CustomSecurityFramework.csproj
      • CustomSecurityFrameworkInjectionModule.cs
    • PublicWebsite.csproj
      • PublicWebsiteInjectionModule.cs
    • Intranet.csproj
      • IntranetInjectionModule.cs

Это означает, что каждый проект в системе поставляется с одним или несколькими модулями NInject, которые знают, как настроить привязки для этих классов проектов.

В большинстве случаев отдельное приложение не хочет вносить существенные изменения в модули ввода по умолчанию, предоставляемые проектом. Например, если я создаю небольшое приложение WinForm, которое должно импортировать проект DataAccess, обычно я также хочу, чтобы весь проект Repository < > classes привязывался к связанным с ним интерфейсам IRepository < > .

В то же время нет ничего, что вынуждало бы отдельное приложение использовать конкретный модуль инъекции. Приложение может создать свой собственный модуль впрыска и игнорировать модули по умолчанию, предоставляемые проектом, который он импортирует. Таким образом, система по-прежнему остается гибкой и развязанной.