Gra*_*ler 8 asp.net dependency-injection ninject
是否可以将Ninject配置为在绑定时不绑定依赖项.
例如
如果我们加载一个名为Client1的模块,其中包含:
public class Client1Module:NinjectModule
{
public override void Load()
{
Bind<IService>.To<FancyService>()
}
}
Run Code Online (Sandbox Code Playgroud)
然后我们加载一个名为Base contains的模块
public class BaseModule:NinjectModule
{
public override void Load()
{
Bind<IService>.To<BasicService>()
}
}
Run Code Online (Sandbox Code Playgroud)
我们希望确保BasicService不受约束,系统始终使用FancyService.我们不会在设计时知道FancyService是否存在.如果找到Client1模块,则会加载它.
我并不是真的想在每次注射等时都有一堆重复的锅炉板代码.因为有50-60个依赖项,所有这些都可以在客户端模块中进行更改.
有任何想法吗?
您必须确保在Client1Module之后加载BaseModule:
public class BaseModule: NinjectModule
{
public override void Load()
{
if (!Kernel.GetBindings(typeof(IService)).Any())
{
Bind<IService>().To<BasicService>();
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我假设我先加载基本模块,然后在认为可以使用后再加载客户端模块
Rebind<IService>.To<FancyService>()
Run Code Online (Sandbox Code Playgroud)
似乎有效
| 归档时间: |
|
| 查看次数: |
2268 次 |
| 最近记录: |