asp.net-mvc-2 – 使用Ninject 2在基本控制器中的属性注入
我在Global.aspx中有以下代码
protected override void OnApplicationStarted() { AreaRegistration.RegisterAllAreas(); RegisterRoutes(RouteTable.Routes); RegisterAllControllersIn(Assembly.GetExecutingAssembly()); } protected override IKernel CreateKernel() { return new StandardKernel(new ServiceModule()); } 我还有以下Ninject模块: internal class ServiceModule : NinjectModule { public override void Load() { Bind<IProductService>().To<ProductService>().InRequestScope(); } } 我还有一个基本控制器: public class BaseController : Controller { [Inject] public IProductService ProductService { get; set; } } 这段代码有效.我遇到的问题是我想从基本控制器中删除inject属性,并在Ninject ServiceModule中指定它.换句话说,我如何在ServiceModule中编写绑定规则,告诉Ninject将ProductService注入基本控制器的属性? 如果我删除该属性,我将得到NullReferenceException. 解决方法
基于约定的绑定生活在
http://github.com/ninject/ninject.extensions.conventions中 – 一个实现IBindingGenerator.这主要涉及发现接口和服务.
通常,构造函数注入是一种很好的默认方法.然而,ASP.NET MVC的工作方式使得这更难做(因此FubuMVC等).因此,物业注入是下一个最佳选择. 您可能会发现在Bind中使用OnActivation可能会让您做得足够 – 如果可以的话,这是迄今为止最简单的. 我将描述您尝试做的基于约定的激活.问题是: >决定你要自动注射的是什么.你打算注入一些不具体的公共场合吗?你的内核知道的一切?除非您能够对您想要做的事情做出清晰的定义,否则注射过程可能会变得难以预测且难以理解.你最终调试并向同事解释了很多. 查看代码,OOTB没有简单的方法.看起来像添加自定义IInjectionHeuristic就可以了. 但是,如果你深入了解容器,你需要 >暂停,看看你是否可以通过不走这条路来保持简单>转到ninject邮件列表并搜索类似的内容>如果您仍想这样做,请在那里发送邮件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – ASP.Net MVC不显眼的日期范围验证
- asp.net-mvc – ASP.NET MVC 3多语言SEO
- .net-4.0 – 为什么我在一个新的MVC4项目中收到编译错误?
- asp.net-mvc – 我的剃刀视图的自定义基页类型,如何使用城堡
- asp.net – ViewState vs cookies vs cashing vs sessions
- .net – ReportViewer 2010无法评估表达式
- asp.net – 如何在网格中按日期升序?
- 如何决定哪个是正确的,WebForms或MVC做ASP.NET时
- asp.net-mvc-3 – 在区域注册中注册路由
- 拆分/模块化大型ASP.NET Web应用程序项目
- asp.net-mvc – 如何在我的视图中将HTML从MVC控制
- asp.net-mvc-4 – 在ASP.NET MVC4 WebAPI中实现E
- 在.NET框架中强制使用英语异常
- asp.net-mvc – MissingMethodException:“此对
- asp.net-mvc – Html.Actionlink作为Button效果
- asp.net-mvc – 如何在视图中的脚本部分中包含脚
- 如何配置asp.net与.net 4.5
- 在ASP.NET中的Response.Redirect中传递cookie
- asp.net-mvc-3 – 为什么我的textBoxFor使用我的
- asp.net-mvc-3 – 是否可以嵌套部分视图?