Где я должен определить мой NinjectModule и мои фабрики? - PullRequest
7 голосов
/ 15 декабря 2011

Я прочитал несколько вещей на этом сайте:

  • Лучше всего настроить наш контейнер при запуске приложения
  • Лучше избегать зависимости наших библиотек от инфраструктуры внедрения зависимостей
  • Рекомендуется использовать фабрики для инициализации объектов, свойства которых определены во время выполнения

Я использую Ninject. Если я понимаю эти рекомендации, необходимо, чтобы:

  • Мои библиотеки не используют NInject.dll
  • Следовательно, мои NinjectModules должны быть определены в проекте моего приложения
  • Мои фабрики (, созданные по этому принципу ) также должны быть определены в проекте моего приложения, а не непосредственно в библиотеке

Это кажется странным, особенно для заводов. У меня есть много проектов, которые используют одну и ту же библиотеку. Должны ли все эти проекты переопределять целевые модули и фабрики?

Что вы думаете?

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

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

Для фабрик вы можете использовать Ninject.Extensions.Factory в будущем, чтобы вам не пришлось внедрять их самостоятельно.

1 голос
/ 15 декабря 2011

Это во многом зависит от контекста ваших библиотек, как я это делаю:

  • Инициализируйте все в Bootstrapper в основном проекте. Хотя у меня есть несколько уровней загрузчиков, где я настраиваю разные вещи (в основном потому, что я использую свои библиотеки в однотипных проектах, поэтому они имеют одинаковую конфигурацию)

  • Чтобы исключить это из среды Ioc, я использую ServiceLocator pattern, который вы можете использовать на своих фабриках.

...