2013-11-26 13 views
1

我有一個項目引用了「實用程序」項目。 「公用事業」項目引用了第三個項目。所有的都有相同的命名空間,但是我不能在主項目中使用「使用OurNamespace.Utilities.3rdProject」。來自主項目的引用命名空間

我需要保持它,以便所有其他新項目只需引用「實用程序」項目並可以訪問通過它引用的所有其他名稱空間。我無法在所有項目中包含所有參考。

/編輯(它級聯排序)

主項目(引用實用程序) - 公用事業 - 項目與公用事業

引用的主要項目相同的命名空間,我現在需要能夠訪問「實用工具」參考中引用的項目中的名稱空間,但不會將其僅添加到主項目中。

編輯 「項目1」 的參考工具

using Utilities.Namespace1; 

在公用事業另一個項目與Namespace2

我想引用到現在,從 「項目1」

using Utilities.Namespace2; 
訪問Namespace2

無需前在「項目1」中共同引用BOTH,因爲將會有多個項目參考實用程序

+0

你面對的確切問題是什麼? –

+0

我不知道你面臨什麼問題,你是說你想引用一個項目與子名稱空間,而不包括父命名空間? – Tweety

+0

我不能通過引用「Utilities」項目(其中有第三個項目的參考)來引用我主項目中的第三個項目的名稱空間 – user3036342

回答

0

如果要直接使用另一個程序集中的程序集的組件,則需要引用。 「直接」指的是以強類型方式,例如:

  • 在另一個程序集中創建一個類型的實例。
  • 處理另一個程序集中類型的實例。

相比之下,如果Utilities程序集在後臺使用第三個項目的組件,但並未發佈這些組件等,則爲「間接」使用。通過公共財產,公共方法的論點等等。
要進一步闡明程序集和名稱空間:一個不引用命名空間,但引用程序集。命名空間僅用於使類型名稱唯一。命名空間和程序集名稱從技術角度來看是完全獨立的(儘管使用程序集名稱來啓動命名空間是一種很好的做法)。因此,在兩個程序集中使用相同的名稱空間並不會以任何方式改變情況;如果你想使用其他裝配的類型,你仍然需要一個參考。
爲了解決您的問題,您可以參考添加到3項目,或者如果你不能做到這一點,請執行下列操作之一:

  • 在工具組裝包裝添加在所需的功能第三個項目。由於您已經有了對Utilities程序集的引用,只要不直接訪問第三個項目的類型,就可以訪問這些包裝。
  • 創建另一個包含包裝的中間項目並引用它。
+0

謝謝,第三個項目的包裝怎麼樣?在這種情況下,我使用Dapper.NET作爲我的Utilities項目引用的第三個項目。我已經嘗試過寫出一些符合您所建議的效果的內容,但是要拋棄原始代碼中的功能,我想要訪問 – user3036342

+0

,我將您的建議標記爲答案。我創建了一個只需要隨時間擴展的包裝器,而不是像現在這樣下降功能 – user3036342