在使用Ninject和asp.net mvc 4时,我无法通过谷歌的.net提供大量文档.
首先,我想知道在asp.net中是否需要Controller工厂.
另外,构造函数注入真的是我们可以用MVC 4进行依赖注入的唯一方法,因为当我将它们与我的控制器一起使用时,属性注入和方法注入似乎不起作用
解决方法
我不是Ninject的专家,但就我所知,我只使用它将我的DataSource接口和我的EfDb类链接到我的应用程序的其余部分.
如果您需要一本包含Ninject构建的Real Application的好书,请尝试:
Pro ASP.NET MVC 3 Framework,Third Edition
要么
我通常关心的代码行很少
public class NinjectControllerFactory : DefaultControllerFactory { private IKernel ninjectKernel; public NinjectControllerFactory() { ninjectKernel = new StandardKernel(); AddBindings(); } protected override IController GetControllerInstance(RequestContext requestContext,Type controllerType) { return controllerType == null ? null : (IController) ninjectKernel.Get(controllerType); } private void AddBindings() { ninjectKernel.Bind<IDataSource>().To<EfDb>(); } }
然后在Global.asax.cs中注册NinjectControllerFactory:
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
如您所见,此类使用方法注入使用私有void AddBindings().如果您遵循测试驱动开发(TDD),这将非常容易