NInject中是否有设施允许我按需在其他模块(程序集)中加载服务,就像在Unity中完成一样?
答案 0 :(得分:12)
我很确定这就是你要找的东西:
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());
}
}
答案 1 :(得分:3)
我不太明白“Like Unity”的意思,但你可以为装载程序集做一些不同的事情。 Ninject本身将默认加载扩展/插件的本地程序集。 Ninject还可以从程序集中加载NinjectModule类。如果您想要做一些更复杂的事情,可以使用Ninject.Extensions.Conventions项目进行大量不同的扫描和类型绑定。
答案 2 :(得分:0)
如果您指的是开箱即用非静态加载程序集,则不然。
还有许多其他问题,例如Using Ninject in a plugin like architecture