1

我想使用 NInject.MVC3 来解析在控制器上调用 Action 方法时要实例化哪个具体类。例如:

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

        return View();
    }

显然,如果没有依赖注入,MVC3 无法实例化 IMyModelInterface,但我可以将该接口绑定到实现该接口的具体类。

我已经尝试过了,只是从试图实例化接口的 MVC 框架中得到错误。

那么,首先,这是一件坏事吗?

如果这不是一件愚蠢的事情,我该怎么做?

如果这是一件坏事,我该怎么做。我考虑过使用 ViewModel 然后复制参数?我有点不愿意这样做,因为我的模型包含视图要使用的所有很好的验证属性 - 并且必须在 ViewModel 中复制它,这似乎增加了维护开销。

我已经看到了使用 Autofac执行此操作的 SO 问题。

我正在使用 Nuget 包中最新版本的 NInject 和 NInject.MVC3。

4

2 回答 2

4

您可能可以实现自己的模型绑定器来执行此操作。

子类 DefaultModelBinder,覆盖 CreateModel 并在此方法中使用 Ninject 返回适当的类型。

于 2011-11-17T21:30:51.707 回答
3

Ninject 不允许您在这样的方法中注入依赖项,您可以在此处阅读。
您应该通过控制器的构造函数、属性或 setter 方法注入您的依赖项。

于 2011-11-17T18:05:06.910 回答