Asp.net-Mvc-3

使用 Ninject 獲取對象的實例

  • October 10, 2011

我通過 Nuget 在我的項目Ninject.MVC3上安裝。

我讀過這篇文章,要在我的控制器中註入依賴項,你所要做的就是安裝 Ninject,在 NinjectMVC3.cs 中添加我的依賴項並準備好。

到目前為止一切順利,但是如何檢索對象的實例?

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

在控制器的建構子中我沒有問題!

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

它起作用的原因是因為 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));
}

不過要小心。依賴注入的新手(包括我自己)經常這樣做。問題是為什麼你需要這樣做?

引用自:https://stackoverflow.com/questions/7718057