Not*_*ple 2 c# binding dependency-injection ninject
我想做一些类似的事情:
kernel.Bind<IBootTaskA>().To<BootTaskA>().InSingletonScope();
kernel.Bind<IBootTaskB>().To<BootTaskB>().InSingletonScope();
kernel.Bind<IBootTask>().To<IBootTaskA>();
kernel.Bind<IBootTask>().To<IBootTaskB>();
Run Code Online (Sandbox Code Playgroud)
所以我可以这样做:
public class Boot
{
public Boot(IBootTask[] bootTasks)
{
foreach(var task in bootTasks){task.Execute();}
}
}
Run Code Online (Sandbox Code Playgroud)
但我似乎无法将接口绑定到接口,有人知道解决方法吗?
这是您的操作方式。
public class Service : IServiceA, IServiceB {}
this.Bind<Service>().ToSelf().InSingletonScope();
kernel.BindInterfaceToBinding<IServiceA, Service>();
kernel.BindInterfaceToBinding<IServiceB, Service>();
Run Code Online (Sandbox Code Playgroud)
ninject扩展可满足您的需求。
https://github.com/ninject/ninject.extensions.contextpreservation/wiki/Bind-Interface-to-Binding
编辑:
在ninject 3中,这稍微容易一些,您不再需要上下文保存,只需:
Bind<IServiceA,IServiceB>().To<Service>().InSingletonScope();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1531 次 |
| 最近记录: |