2009-05-29 63 views
0

請先閱讀以下主題:循環引用(再次...)

Circular reference between Assemblies in C# and Visual Studio 2005

實現接口是解決我的問題,但不履行我的目標。

我的目標是僅在UI層/程序集中使用BO層/程序集。這樣我就可以保持一個乾淨的圖層到圖層的引用。

因爲我不希望在UI層/程序集中爲BO層/程序集和ORMapper層/程序集添加引用。

我只想在UI層/程序集內使用BO-layer/assembly。

與此同時有人建議我說,它只能使用反射,而不是DI。真的嗎?

回答

0

如果你確實堅持在你的BO層隱藏ORM層後面,那麼依賴注入應該仍然能夠幫助你。請注意,雖然您將不能從您的UI線程中引用DI庫,因爲那將是您的業務對象將來自的地方。

方法:

  • 創建包含方法加載數據的接口來填充User對象
  • 在你的ORM項目
  • 在啓動時實現此接口,登記對抗的ORM實現接口使用某種類型的DI容器(請閱讀您使用的任何DI庫的詳細信息,例如:www.ninject.org用於輕量級的東西)
  • User對象提供構造函數這需要人口接口的實例,從

當你需要一個User對象加載數據之後,你問DI庫來創建它,並且DI庫將建設User,並給它的一個參考ORM實現。你必須注入一些屬性到DI調用中,以及「用戶名」和「密碼」才能完全用值填充它。

請注意,這不正是DI發明的應用程序代碼真的應該直接處理ORM來創建/讀取/更新/刪除業務對象。

+0

我期待着更好的解決方案,但這是我現在可以提出的最好的解決方案。 – jerryjvl 2009-05-29 07:20:27