2015-03-02 20 views
0

我在我的應用程序四個層,其中服務層是上下文根:如何將NinjectModule與Ninject.MVC和多個圖層一起使用?

Presention 
    | 
    | 
Services (Context Root) 
    | 
    | 
Repository 
    | 
    | 
Data 

我使用Ninject MVC的Presention層的具體項目,我把一切都在服務層搶注(上下文根)。 但是,我的數據層有一些數據層特定的服務,我想在該層中註冊。目前我的服務層不知道我的數據層,我沒有看到真正的理由要求。有沒有辦法使用Ninject Modules來一次註冊從Ninject Module繼承的所有IOC容器?

在附註中,我在項目中使用了Telerik,因此我無法使用反射來獲取從NinjectModule繼承的所有對象。 Telerik的NinjectModule版本被密封或無法訪問和重新註冊。

回答

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()); 
     }); 
相關問題