2010-07-29 120 views
3

使用Visual Studio 2008:C#主項目和子項目引用

內的溶液有一個主項目(PROJECT1),相同的解決方案中還有其他的項目(這些項目是Excel 2007工作簿模板)。這些其他項目需要引用Project1中的類和對象,並且Project1需要能夠訪問Workbook項目。

我現在所擁有的是其他項目被設置爲依賴於Project1和引用被添加到Project1的其他項目。

這是正確的方式來做我想要完成的事情還是有另一種方式?

+0

你爲什麼不在一個項目中擁有一切? – 2010-07-29 22:46:54

回答

8

你不能讓兩個項目相互依賴(這完全是合乎邏輯的;哪個項目應該先建立?)。您應該將Project1和Workbook項目都需要的Project1中的零件移動到單獨的項目中,該項目可以由Project1和Workbook項目引用。


更新
有處理這種情況幾種不同的方式,並且不知道你的應用程序的細節,我不能給出任何具體的解決辦法。但一種方法是使用dependency injection。不要讓Workbook項目對Project1中的代碼具有硬連線依賴性,您可以提取此功能的接口。該接口放置在另一個可由Project1和Workbook項目引用的項目中。

然後我假定Project1將在Workbook項目中創建類型的實例。這意味着你應該改變這些類型的構造函數,如果這個接口類型有一個參數。 Project1將包含它在創建時將傳遞給Workbook項目類型的接口的實現。

這樣,工作簿項目代碼就可以使用Project1中的代碼而無需對其進行引用。

+0

+1,是創建一個名爲「Common」的項目,將這些共享依賴項放入中。 – JohnB 2010-07-29 21:41:54

+0

我明白你不能有兩個項目引用彼此,這將是一個遞歸的噩夢。 那麼我將如何引用Project1中的Excel工作簿模板項目?因此,取決於Project1的Excel工作簿模板項目,Project1和Excel工作簿項目都依賴於CommonProject,然後讓Project1依賴於所有Excel工作簿項目? – mattgcon 2010-07-29 21:53:31

+0

@mattgcon:看到我更新的答案。 – 2010-07-29 22:43:22

相關問題