2015-09-08 61 views
0

如何在我的一個Ninject模塊中加載引用的模塊。舉個例子,我有業務層模塊,這取決於數據訪問模塊,但目前我必須做這樣的事情:Ninject模塊鏈

Business.Module { 
    class Module{ 
     public void Load() 
     { 
      //add bindings 
     } 
    } 
} 
DataAccess.Module { 
    class Module{ 
     public void Load() 
     { 
      //add repositories bindings 
     } 
    } 
} 

,然後在應用程序中,我必須使用兩個:

class ControllerFactory 
{ 
    NinjectKernel kernel = new NinjectKernel(
     new Business.Module(), 
     new DataAccess.Module()) 
} 

但我的目標是分離應用程序和數據層,所以應用程序。必須僅涉及業務層,其涉及數據層。

我知道如何使用Unity容器來完成。但是Ninject呢?

+3

你在做什麼是正確的。模塊只能從組合根中引用並使用。這意味着您不應該從業務模塊中引用DataAccess。組成root =你創建內核的地方。它應儘可能接近應用程序的啓動位置。 – BatteryBackupUnit

+0

另請參閱Mark Seeman對[Composition Root]的描述(http://blog.ploeh.dk/2011/07/28/CompositionRoot/) – BatteryBackupUnit

回答

1

您可以爲此創建一個單獨的項目。從中引用DAL和業務層是安全的,因爲除配置組合根以外,它不包含任何邏輯。然後從您的GUI項目中引用此項目。 它可能看起來像一個開銷,但它在我的經驗完美。