使用Ninject获取对象的实例

时间:2011-10-10 20:08:52

标签: asp.net-mvc-3 dependency-injection ninject

我通过Nuget在我的项目Ninject.MVC3上安装。

我读了this article要在我的控制器中注入依赖项,你所要做的就是安装Ninject,在NinjectMVC3.cs中添加我的依赖项并准备就绪。

到目前为止一切顺利,但如何检索对象的实例?

public ActionResult MyAction()
{
    var myObject = /* HERE  ??*/
}

在控制器的构造函数中我没有问题!

public class AccountController : Controller
{
    public AccountController(IRepository repository) { ... } //This works!!
}

1 个答案:

答案 0 :(得分:35)

它起作用的原因是因为ControllerFactory查找DI并自动添加它。如果您想获得特定实例,可以执行以下操作:

private static void RegisterServices(IKernel kernel) {
    kernel.Bind<ICoolObject>().To(CoolObject);
}

public ActionResult MyAction() {
    var myObject = 
        System.Web.Mvc.DependencyResolver.Current.GetService(typeof (ICoolObject));
}

虽然很难受。对于依赖注入新手(包括我自己)的人来说,这种情况经常发生。问题是为什么你需要这样做?