5

С NInject (предпочтительно 2.0), какие у нас есть варианты подключения к нашим объектным зависимостям в веб-приложении?Опции для зависимостей проводки с NInject

Могут ли они быть определены в файле конфигурации XML?

Или это нужно сделать с помощью кода?

ответ

5

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

Освободитесь от XML

Большинство других зависимостей .NET зависимостей основаны на использовании XML, чтобы объявлять привязки типов. Вместо того, чтобы заставлять вас писать громоздких и подверженных ошибкам текст, Ninject руки вам текучим интерфейс, который позволяет соединить части вашего приложения, используя полноценный код. Это означает, что вы можете использовать IDE и компилятор, например, код завершения и тип безопасности.

+9

Удивительно, как они могут сделать негативный звук, как плюс. Большинство других DI \ Ioc позволяют использовать Xml или Code. –

+2

Это неотрицательно. Заведомо вырезанная поддержка XML, потому что это боль в ремонте. – Restuta

+7

В основном я использую код для сопоставления привязок, но есть случаи, когда конфигурация работает. Для отладки я могу привязать IMailService к VirtualMailService, но в релизе используйте SmtpMailService. Файлы конфигурации преобразуются на основе среды выпуска. –

3

Что вы ищете? Какие вещи вы хотите настроить? Динамический выбор стратегии? Передача номеров портов? Вы могли бы предложить гораздо больше информации о том, что вы думаете, чтобы получить лучший ответ [который вы можете получить: P].

Вы должны разделить озабоченность:

  1. известного объекта подключения (DI)
  2. конфигурации - как правило, вы хотите, чтобы разделить те на небольшие сфокусированные подмножества, например, Сильно типизированных конфигурации элементов против имеющих глобальный пул параметров в большой куче mishmashed вместе ла appSettings
  3. плагинов/неизвестно объект проводки (MEF?)

В первом бассейне, делая это в Кодексе просто правильный путь, и я не могу думать о каких-либо преимуществах, которые даст XML, особенно. в контексте сильных имен и т.д.

4

Проблема, которую я вижу с определением привязок только в коде, заключается в том, что вам нужно добавить ссылку на dll. Вы не можете изменить привязку без добавления ссылки на новую dll (удаление ссылки на старый), изменить код и перекомпилировать.

Если бы у нас была xml config, мне вообще не нужна ссылка, и мне не пришлось бы перекомпилировать. Прямо сейчас у меня есть приложение MVC, которое использует DI для передачи репозиториев контроллерам. Ничто иное, чем код Ninject для добавления привязок, использует конкретные реализации репозиториев. И все же мне нужно добавить ссылку на DLL, содержащую реализации. Только для одной строки кода!

Или, может быть, есть возможность достичь этого с помощью Ninject?

+2

, и именно поэтому отсутствие конфигурационных файлов является отрицательным ... –

Смежные вопросы