2012-11-26 124 views
0

我正在構建具有表示層(PL),業務邏輯層(BLL)和數據訪問層(DAL)的3層體系結構。3層體系結構中的IOC

我要實現它在3個不同的實體項目如下:

  • PL項目 - > BLL的DLL參考
  • BLL項目 - > DAL的參考
  • DLL的DAL項目 - >無參考

通過定義接口和通過構造函數注入使用DI在BLL和DAL之間應用IOC的概念將改變架構如下

  • PL項目 - > BLL的Dll的參考,參考DAL的DLL(對於具體類型的DI到BLL對象的構造函數)
  • BLL工程 - > DAL的參考
  • DAL項目 - >沒有參考

理想情況下,我想實現以下目標,同時保持我與IOC的IOC。

  • PL項目 - > BLL的Dll
  • BLL項目的參考 - DAL的Dll
  • DAL項目>參考 - >無參考

這怎麼可能?

注意:我不想使用IOC容器。

+1

我不明白。 DI和IoC對你的依賴不做任何事情。他們只是注入他們。那麼你真正的問題是什麼? – jgauffin

+0

我只是不想在我的PL中參考DAL – sjj

+0

爲什麼你這樣做呢? '具體類型的DI到BLL對象的構造函數?'沒有意義?也許你的問題的一個真實例子?你如何解決它沒有DI? – jgauffin

回答

0

您可以將DI的引導分爲兩部分。第一個在PL項目中完成的工作將爲在BL中實現接口並由PL使用的對象設置IOC配置。在BL項目中編寫的第二部分將爲在DAL中實現接口並由BL使用的對象設置IOC配置。 然後您需要讓PL項目設置引導程序調用BL項目的引導程序以及執行它自己的配置。如果你這樣做,你不必在PL中引用DAL。

+0

謝謝Ryan.can你解釋一個例子或外部鏈接請。 – sjj

+0

感謝Ryan。你用一個例子或外部鏈接解釋,請注意我不想使用IOC容器。 – sjj

+0

@ user1841186我的答案正在假設您正在使用IOC容器。我會建議您使用IOC容器,而不是爲此編寫自己的代碼。 –