Инъекция зависимых зависимостей в параметры метода действия в MVC3 - PullRequest
1 голос
/ 17 ноября 2011

Я хотел бы использовать NInject.MVC3, чтобы решить, какой конкретный класс создавать при вызове метода Action на контроллере. Так, например:

    [HttpPost]
    public ActionResult Index(IMyModelInterface model)
    {
        // do something

        return View();
    }

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

Я пробовал это и просто получаю сообщение об ошибке от инфраструктуры MVC, пытающейся создать экземпляр интерфейса.

Итак, во-первых, это плохая вещь, чтобы попытаться сделать?

Если это не глупо, как мне это сделать?

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

Я видел вопрос SO: делает это , используя Autofac.

Я использую самые последние версии NInject и NInject.MVC3 из пакета Nuget.

Ответы [ 2 ]

4 голосов
/ 18 ноября 2011

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

Подкласс DefaultModelBinder, переопределить CreateModel и использовать Ninject в этом методе, чтобы вернуть соответствующий тип.

3 голосов
/ 17 ноября 2011

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

...