我的应用程序中有四个层,其中服务层是上下文根:
Presention
|
|
Services (Context Root)
|
|
Repository
|
|
Data
我正在使用Ninject MVC作为Presention图层特定项目,我在服务层(上下文根)中注册了其他所有内容。 但是,我的数据层有一些我希望在该层中注册的数据层特定服务。目前,我的服务层并不了解我的数据层,我认为没有理由将其作为一项要求。有没有办法使用Ninject Modules注册一次从Ninject模块继承的所有IOC容器?
另一方面,我在项目中使用Telerik,因此我无法使用反射来获取从NinjectModule继承的所有对象。 Telerik的NinjectModule版本要么已密封,要么无法访问和重新注册。
答案 0 :(得分:1)
Ninject IKernel接口有一个Load()方法,该方法将程序集列表作为参数。它将搜索这些程序集中的任何INinjectModule并加载它们。
否则,请查看Ninject Conventions项目。我正在使用它来自动绑定任何实现我自己的IDependency
:
Kernel.Bind( scanner =>
{
scanner.From( assemblies )
.Select( t => t.Is<IDependency>() )
.BindAllInterfaces()
.ConfigureFor<ISingletonDependency>( config => config.InSingletonScope() )
.ConfigureFor<IRequestDependency>( config => config.InRequestScope() );
} );