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行。