加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – Ninject绑定在不同的控制器上

发布时间:2020-12-16 07:15:18 所属栏目:asp.Net 来源:网络整理
导读:我试图将两个具体类绑定到一个接口.我应该在Ninject中使用什么命令来做到这一点?我想要做的是将两个具体类绑定到控制器名称上的一个接口.那可能吗?我想在ninject中你使用.When来给出条件,但没有教程在那里他们向你展示如何使用.When for ninject. 解决方法
我试图将两个具体类绑定到一个接口.我应该在Ninject中使用什么命令来做到这一点?我想要做的是将两个具体类绑定到控制器名称上的一个接口.那可能吗?我想在ninject中你使用.When来给出条件,但没有教程在那里他们向你展示如何使用.When for ninject.

解决方法

这里有几个例子.查看Ninject源项目及其测试子项目的各种使用样本,这是最好的文档,特别是因为尚未针对v2更新文档.

// usage of WhenClassHas attribute
Bind<IRepository>().To<XmlDefaultRepository>().WhenClassHas<PageAttribute>().WithConstructorArgument("contentType",ContentType.Page);
// usage of WhenInjectedInto
Bind<IRepository>().To<XmlDefaultRepository>().WhenInjectedInto(typeof(ServicesController));
Bind<IRepository>().To<XmlDefaultRepository>().WhenInjectedInto(typeof(PageController)).WithConstructorArgument("contentType",ContentType.Page);
Bind<IRepository>().To<XmlDefaultRepository>().WhenInjectedInto(typeof(WidgetZoneController)).WithConstructorArgument("contentType",ContentType.WidgetZone);
// you can also do this
Bind<IRepository>().To<PageRepository>().WhenInjectedInto(typeof(PageController)).WithConstructorArgument("contentType",ContentType.Page);
Bind<IRepository>().To<WidgetZoneRepository>().WhenInjectedInto(typeof(WidgetZoneController)).WithConstructorArgument("contentType",ContentType.WidgetZone);
// or this if you don't need any parameters to your constructor
Bind<IRepository>().To<PageRepository>().WhenInjectedInto(typeof(PageController));
Bind<IRepository>().To<WidgetZoneRepository>().WhenInjectedInto(typeof(WidgetZoneController));
// usage of ToMethod()  
Bind<HttpContextBase>().ToMethod(context => new HttpContextWrapper(HttpContext.Current));

HTH

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读