Ninject绑定,接口接口
我想按照以下方式做点什么:
kernel.Bind().To().InSingletonScope(); kernel.Bind().To().InSingletonScope(); kernel.Bind().To(); kernel.Bind().To();
所以我可以这样做:
public class Boot { public Boot(IBootTask[] bootTasks) { foreach(var task in bootTasks){task.Execute();} } }
但我似乎无法将接口绑定到接口,任何人都知道解决这个问题的方法吗?
你是怎么做的。
public class Service : IServiceA, IServiceB {} this.Bind().ToSelf().InSingletonScope(); kernel.BindInterfaceToBinding(); kernel.BindInterfaceToBinding();
ninject扩展处理你需要的东西。
https://github.com/ninject/ninject.extensions.contextpreservation/wiki/Bind-Interface-to-Binding
编辑:
在ninject 3中,这稍微容易一些,您不再需要上下文保留,简单地说:
Bind().To().InSingletonScope();
更新: V3 Bind重载解决了很多这个问题。
Ninject没有任何这种性质的结构(我也不知道其他具有这种系统的容器)。
我怀疑某种forms的条件绑定可能最适合你的真实问题(我假设你并没有真正拥有与你所展示的完全相同的标记接口)。
或者你只是想找到一个结构来保持你的绑定DRY? 我个人会将上面的内容表达为两个带有自定义.WithStandardTaskProperties扩展方法的绑定,而不是4行。
- Contentpresenter,基于类型的datatemplate选择和绑定
- 绑定IP地址只是第一次工作
- 将WPF Button CommandParameter绑定到DataTemplate中的Button本身
- WPF CommandParameter MultiBinding值为null
- 如何使用RelativeSource Binding创建DataGrid绑定到Model和ViewModel?
- Ninject基于参数类型的条件绑定
- 显示ItemsControl.ItemsSource是否为null
- WPF:当某个值更改时重新应用DataTemplateSelector
- 创建可绑定到DataGrid的自定义集合