2011-05-31 46 views
0

是否可以從共享位置或GAC與Unity引用程序集?從共享位置或帶有Unity的GAC引用程序集

假設我有兩個項目(同一解決方案下):

  • MyProject.Data(庫接口)
  • MyProject.Data.EntityFramework(庫實體框架試行)

我想要在一個ASP.NET MVC應用程序(MyProject.Web)中使用IoC,該應用程序也處於相同的解決方案下,但我不想爲接口和實現添加項目引用。理想情況下,我想向接口添加項目引用,並從共享位置或GAC加載實現。這可以防止MyProject.Web中的任何代碼創建特定實現的實例 - 這應該始終由IoC提供程序完成。

我可以決定創建一個nHibernate實現,IoC將使交換機更容易。如果有任何直接的耦合,這將是一場噩夢。這導致我回到這個問題。讓我們刪除開發人員在不詢問IoC容器如何解析接口的情況下實例化具體實現的可能性。

回答

1

Unity只能實例化它可以容納的類型,所以如果你想使用它的類型,你的MyProject.Data.EntityFramework程序集必須在你的MVC輸出目錄中。如果您不想直接引用項目,則可以使用構建操作來複製程序集,但沿着該路徑行進意味着必須使用XML而不是API來配置Unity,這可能會有點痛苦並且會丟失你可以通過API獲得類型檢查的優勢。

最終我會去使用API​​並直接引用該項目。這應該伴隨着教育,以便其他開發人員知道系統架構應該如何使用,以及代碼審查來幫助實施它。

+0

感謝您的回覆。我不介意使用XML,但我明白你的觀點。也許他們將在未來添加此功能。 – 2011-05-31 20:04:49

+0

不客氣,祝你好運:) – 2011-05-31 20:45:20

+0

我要創建一個單獨的IoC項目,它將引用接口和實現項目。這將包含一個使用流暢語法(win)創建的容器。 Web項目可以引用IoC項目和任何接口項目,從而將它從實現中解耦(win win)。 – 2011-06-01 13:13:17

相關問題