如何将NInject模块链接在一起

时间:2013-01-25 16:06:14

标签: c# asp.net dependency-injection ninject

我有一个使用NInject的多层应用程序来解决依赖注入问题。每个层都有一个特定的NInject模块:

Service Layer - ServiceModule
DataLayer - DataModule

在我的表示层中,我真的不想加载每个模块。而不是我想要的,例如,加载ServiceModule,模块负责加载其依赖项。

我怎样才能做到这一点?

例如,这是我的ServiceModule:

public class ServicesModule : NinjectModule
{
    public override void Load()
    {
        ...
        Bind<IProductService>().To<ProductService>();
        ...
    }
}

2 个答案:

答案 0 :(得分:15)

简单,在NInject模块中,您可以访问内核:

Kernel.Load(new [] { new [YourModule]() });

答案 1 :(得分:-1)

如果您的模块依赖于单个模块,则可以从该模块继承(而不是NinjectModule)并调用base.Load()

public override void Load()
{
    base.Load();
    ...
}

这将有效地链接模块。