我有一个使用NInject的多层应用程序来解决依赖注入问题。每个层都有一个特定的NInject模块:
Service Layer - ServiceModule DataLayer - DataModule
在我的表示层中,我真的不想加载每个模块。而不是我想要的,例如,加载ServiceModule,模块负责加载其依赖项。
我怎样才能做到这一点?
例如,这是我的ServiceModule:
public class ServicesModule : NinjectModule
{
public override void Load()
{
...
Bind<IProductService>().To<ProductService>();
...
}
}
答案 0 :(得分:15)
简单,在NInject模块中,您可以访问内核:
Kernel.Load(new [] { new [YourModule]() });
答案 1 :(得分:-1)
如果您的模块依赖于单个模块,则可以从该模块继承(而不是NinjectModule
)并调用base.Load()
:
public override void Load()
{
base.Load();
...
}
这将有效地链接模块。