6

NInject 中是否有工具可以让我像在 Unity 中那样按需加载来自其他模块(程序集)的服务?

4

3 回答 3

13

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

var kernel = new StandardKernel();
kernel.Load( Assembly.Load("yourpath_to_assembly.dll");

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

public void Load(IEnumerable<Assembly> assemblies)
{
    foreach (Assembly assembly in assemblies)
    {
        this.Load(assembly.GetNinjectModules());
    }
}
于 2009-11-14T05:25:08.860 回答
3

我不太明白你所说的“像 Unity”是什么意思,但你可以做一些不同的事情来加载程序集。默认情况下,Ninject 本身将为扩展/插件加载本地程序集。Ninject 还可以从程序集中加载 NinjectModule 类。如果你想做一些更复杂的事情,你可以使用Ninject.Extensions.Conventions项目来做很多不同的扫描和类型绑定。

于 2009-11-25T22:10:55.613 回答
0

如果您指的是开箱即​​用非静态加载程序集,则不是。

还有很多其他问题,例如,在像架构这样的插件中使用 Ninject

于 2009-11-09T08:54:20.807 回答