我通过Nuget安装在我的项目
Ninject.MVC3上。
我读了this article,在我的控制器中注入依赖关系,所有你需要做的是安装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)); }
尽管如此这些经常与那些新的依赖注入(我自己包括)完成。问题是你为什么需要这样做?