2009-07-01 90 views
12

出於好奇,我創建了兩個程序集,它們都有一個具有完全相同名稱空間(Library1)的類(Class1)。然後,我創建另一個客戶端引用這2個程序集並嘗試創建一個Class1的實例。使用2個.NET程序集中的相同名稱和名稱空間的類型

編譯器毫不奇怪地給了我一個關於模糊引用的編譯錯誤。有沒有什麼辦法可以在我想用來避免歧義的程序集中明確指定類型?

注:我知道這很少,如果有的話,在實踐中發生。這只是出於對語言特徵的好奇心的一個問題。

回答

10

我認爲你應該使用extern alias來將程序集命名空間包裝在Global命名空間之外。具體方法如下:

  1. 在引用了2個集的項目,選擇參考下的其中之一,並在屬性窗口從global更改別名值,比方說,global, Library1a

  2. 對於其他參考做同樣的事情,但給它一個不同的別名 - 讓我們以global, Library1b爲例。

  3. 插入extern alias Library1a;和/或extern alias Library1b;作爲任何使用程序集的類的前2行。

  4. 訪問含糊不清的成員時,請使用Library1a.Library1b.來限定名稱空間。例子:Library1a.Library1.Class1...Library1b.Library1.Class1...

1

它發生在實踐中,是一個真正的痛苦,外部別名不能總是解決問題。以下是一個問題的例子:Duplicate Namepsaces

相關問題