NInject中是否有类似Unity的功能,可以按需从其他模块(程序集)中加载服务?
NInject中是否有类似Unity的功能,可以按需从其他模块(程序集)中加载服务?
我相信这就是你要找的:
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());
}
}
我不太理解你所说的“像Unity”,但你可以采取几种不同的方法来加载程序集。默认情况下,Ninject本身将加载本地程序集以进行扩展/插件。Ninject还可以从程序集中加载NinjectModule类。如果你想做更复杂的事情,可以使用Ninject.Extensions.Conventions项目进行各种扫描和类型绑定。