Почему вводить контроллеры, а не действия - PullRequest
1 голос
/ 09 февраля 2012

Почему все внедрение зависимостей в ASP.NET MVC3 происходит на уровне контроллера, а не на уровне действий.Создание контроллера обычно переопределяется для внедрения зависимостей при создании экземпляра контроллера.Тем не менее, контроллер создается только в результате запроса на действие.Почему бы не обработать внедрение зависимостей на уровне действий?

Ответы [ 3 ]

4 голосов
/ 09 февраля 2012

Поскольку это известная схема, и в MVC имеются зацепки для внедрения в контроллер, а не в действие.Есть фактор контроллера, но не фабрика действий.Вы создаете экземпляр контроллера, а не метод, так что именно здесь должно произойти внедрение.

Кроме того, есть известный шаблон внедрения конструктора, который был бы более уместным здесь, чем какой-либо другой метод (то есть метод действия), и он также допускает любые другие настройки в вашем конструкторе, которые могут быть необходимы.

1 голос
/ 05 мая 2012

Вы можете использовать привязку модели в качестве своего рода инжектора метода действия.Вот небольшое введение в связыватели моделей, которое вы можете прочитать:

http://www.singingeels.com/Articles/Model_Binders_in_ASPNET_MVC.aspx

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

0 голосов
/ 09 февраля 2012

Я предполагаю, что вы играете главную роль в контроллерах GOD с 10 зависимостями и множеством действий, и удивляетесь, как это можно улучшить?Контроллеры должны быть тощие и содержать несколько действий .Я предпочитаю, чтобы у моих контроллеров было только одно действие на метод HTTP.

...