我有多個項目的解決方案 - 類似如下:的WebAPI - 使用Unity國際奧委會在多個項目
- 的WebAPI
- ICustomerService.cs
- 業務邏輯
- CustomerService.cs
- 個IDatabaseService.cs
- 數據庫訪問
- DatabaseService.cs
以前的的WebAPI項目有一個參考的業務邏輯,那麼只好數據庫訪問的參考。我試圖反轉這種邏輯。
目前,我在我的WebAPI項目中使用Unity來解析來自業務邏輯層的實現的接口,但是一旦我已經顛倒了我的邏輯,以便業務邏輯層具有對WebAPI層的引用,那麼Unity註冊不會「沒有一個循環引用科技工作:
var container = new UnityContainer();
container.RegisterType<ICustomerService, CustomerService>();
GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
當我嘗試註冊我的類型,在ICustomerService住在頂層的項目,爲CustomerService是看不見它。
我已閱讀關於有一個單獨的項目來容納統一配置,但也會創建一個循環參考。我該如何做這項工作?
感謝您的評論,我想這樣做的原因是爲了支持業務邏輯和層下的靈活性。我把這個放在一個正在改變的ERP系統之上,這兩個系統將平行運行一段時間。我希望依賴注入器是智能的,這樣服務就可以從一個系統移動到另一個系統,我可以將邏輯置於「使用CustomerServiceA.cs」和「使用CustomerServiceB.cs」的位置 - 也許我正在考慮這個問題錯誤的方法? –
因此,您希望能夠在不重新編譯的情況下更改業務邏輯層? – Michael
不久將有第二個業務邏輯和數據庫訪問層,我希望能夠選擇哪一個我想以編程方式使用,但webapi不應該知道它將使用哪個實現 –