0

我堅持在Windows 8.1 Store應用程序中向BL/DAL圖層添加依賴注入。我在Windows 8.1 Store應用程序中使用Caliburn Micro 2.0.0.0 Beta。這是一個示例應用程序,我正嘗試使用CM構建,具有複雜的結構 - 所以有業務邏輯層,數據訪問層和表示層。Caliburn Micro + DI在Windows 8.1 Store中的BL/DAL應用程序

CM會自動處理直接在UI下引用的項目的DI;這是BLL。所以,從IBusinessInterface;我能夠獲得BLLClass實例。但是,由於BLL/DAL沒有引導程序,我無法在業務層中注入DALClass實例(IDataInterface類型)。在UI項目中添加對DAL的引用將解決該問題,但會影響分層的目的。

我嘗試添加庫的Bootstrapper;但沒有BootstrapperBase繼承自!

enter image description here

以及完整的源代碼在這裏共享 - https://www.dropbox.com/s/5dnhs2sp3za5dj6/SampleStoreCMApp.zip

回答

0

爲什麼添加引用DAL「打敗分層的目的」?

您需要將您的Composition Root放在某個地方,例如,引導程序,並且需要知道所有必須註冊的類型。

一種解決方案是將一些註冊過程委託給BLL庫中知道DAL類型的類,但我不確定爲什麼不能添加對DAL庫的引用。

如果您使用的是Ninject或Autofac(或類似的),則它們具有可從其他組件加載的模塊的概念(它們可以加載其他模塊)。

0

你也必須使用override

protected override IEnumerable<Assembly> SelectAssemblies() 
     { 
      var assemblies = base.SelectAssemblies(); 

      //locate other dlls here, I do it in my app based on the namespace and extension 

      return assemblies.Concat(modules); 

     } 
相關問題