NInject可以按需加载模块/组件吗?

Igo*_*orM 6 assemblies ninject inversion-of-control

NInject中是否有设施允许我按需在其他模块(程序集)中加载服务?

Sea*_*ers 13

我很确定这就是你要找的东西:

var kernel = new StandardKernel();
kernel.Load( Assembly.Load("yourpath_to_assembly.dll");
Run Code Online (Sandbox Code Playgroud)

如果在Ninject.dll中查看带有反射器的KernelBase,您将看到此调用将递归加载已加载程序集中的所有模块(Load方法采用IEnumerable)

public void Load(IEnumerable<Assembly> assemblies)
{
    foreach (Assembly assembly in assemblies)
    {
        this.Load(assembly.GetNinjectModules());
    }
}
Run Code Online (Sandbox Code Playgroud)


Rub*_*ink 0

如果您指的是开箱即​​用的非静态加载程序集,那么事实并非如此。

关于此还有很多其他问题,例如,在类似架构的插件中使用 Ninject