МОК и ASP.NET контроллеры MVC

Определенно, НЕ вариант 1, одна из сильных сторон Python - его разборчивость. Вариант 1 серьезно снижает эту разборчивость.

Из 2 и 3 я повторю те же причины, что и Pyfunc для обоих.

Однако в моем собственном коде я предпочитаю вариант 3 просто потому, что первый элемент иногда «теряется» из-за того, что находится в конце строки объявления, а при быстром взгляде на код иногда я просто не вижу его сразу. Я знаю, что это немного глупо, но ум работает таинственным образом ...

5
задан Daniel A. White 5 June 2009 в 01:03
поделиться

3 ответа

Было бы намного проще использовать инъекцию конструктора, и фабрика контроллера внедрила его за вас. Если можете, не используйте локатор служб (ваш ServiceResolver), если вы можете обойтись без внедрения конструктора.

Там есть некоторая информация об этом на Добавление фабрики контроллеров в ASP MVC

Ссылка показывает, как чтобы сделать это с помощью StructureMap, и похоже, что вы используете Unity, но это должно быть несложно для адаптации.

10
ответ дан 13 December 2019 в 22:14
поделиться

Я предполагаю, что защищенные интерфейсы, которые у вас есть, являются зависимостями для контроллера. Можно настроить контейнер IoC, чтобы внедрить зависимости за вас. Это, безусловно, можно сделать с помощью Castle Windsor. Вам нужно будет изменить свой класс BaseController, чтобы иметь конструктор с необходимыми зависимостями, если контейнер IoC знает о других службах, он сможет их внедрить.

0
ответ дан 13 December 2019 в 22:14
поделиться

Один из принципов, лежащих в основе Инверсия управления и Компонентно-управляемая разработка , использует статические локаторы сервисов только тогда, когда нет других путь (то есть: в хостах веб-сервисов или источниках данных объектов).

С технической точки зрения, используя статические локаторы сервисов, базовый контроллер не нарушает IoC, он просто не использует его.

Проверьте существующая интеграция между контейнером Autofac IoC и ASP.NET MVC (другие контейнеры также должны иметь такую ​​возможность).

0
ответ дан 13 December 2019 в 22:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: