2012-03-05 84 views
7

不知道如何解釋這個問題,但這裏有問題。是否有可能顛倒c#命名空間的別名?

我設計了一個命名空間:my.foo.bar

在我班的一個,我不小心命名的命名空間my.foo.Bar

我想解決的命名空間的資本,使每個人都在同一頁上,但是這是一個共享庫,我不能用這個重新編譯所有程序。

那麼,有什麼我可以創建,實質上,重定向my.foo.Barmy.foo.bar

+0

使用VB.NET訪問您的庫 - 它是不區分大小寫的。 ;-)(好吧,開玩笑吧) – Heinzi 2012-03-05 18:29:13

回答

7

不是全局的。您可以使用namespace aliases,但只能在客戶端代碼中使用。這聽起來像你可能需要採取一個突破性的改變。

一做,如果只有一兩個班的方式,將他們從my.foo.Bar複製到my.foo.bar,棄用使用Obsolete attribute壞的命名空間的人,慢慢地在移動客戶端正確的。

如果類是無狀態的,那麼在my.foo.Bar命名空間中的類可以委託給一個在my.foo.bar命名空間@JohnSaunders建議,但前提是該類別的客戶端的使用並不排除代表團(一切的方法或屬性,該類的類型不通過反射使用等)。

+0

對於陳舊屬性+1。 – Heinzi 2012-03-05 18:30:44

+0

在這種情況下,它是一個小類,4個屬性和3個重載的構造函數。 – IronicMuffin 2012-03-05 18:40:59

6

您可以做的最好的做法是將命名空間中的所有類型都取出來,並在正確的名稱空間中創建它們的版本。這些可以委託給糟糕的命名空間版本。

+1

或許'使用myBar = my.foo.Bar'。約束'不可修改共享庫'大大限制了選項。 – Steve 2012-03-05 18:30:35

+0

@John我該怎麼做?從錯誤命名的命名空間中的類繼承?這足夠好嗎? – IronicMuffin 2012-03-05 18:34:31

+0

我使用ReSharper,所以我只是簡單地告訴它創建委派成員。 – 2012-03-05 18:35:10