Инъекция зависимых зависимостей в параметры метода действия в MVC3

Я хотел бы использовать 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 ответа

Решение

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

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

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

Другие вопросы по тегам