我有一個有幾個名稱空間的結構,並且在每個名稱空間中,我有一個靜態類,它是該名稱空間的網絡中的一個小型小蜘蛛。像部門主管一樣。名稱空間和類之間的名稱衝突
我們以兩個命名空間Foo.Bar.Baz
和Foo.Bar.Quux
爲例。
我有一個文件,它看起來像這樣:
namespace Foo.Bar.Baz
{
static class Baz
{
public static void DoSomething()
{
Console.Writeline("Doing something...");
}
}
}
,然後第二個文件:
using Foo.Bar.Baz
namespace Foo.Bar.Quux
{
static class Quux
{
public static void GetToWork()
{
Baz.DoSomething();
}
}
}
現在,我得到了第二個文件的錯誤,當我嘗試編譯,因爲它認爲巴茲是命名空間而不是班級。但是因爲我有using Foo.Bar.Baz
這行,所以在該命名空間內使用任何類而不需要在名稱空間的名稱前加上前綴應該沒問題吧?我可以正確使用來自該名稱空間的其他內容,但不能使用同名的類。
它有點感覺像編譯器偷偷把這一行添加到每個文件:using Foo.Bar
。
而且,我不能只是把靜態Baz
類Foo.Bar
命名空間內從那以後,我會得到錯誤說Foo.Bar.Baz
不是一個命名空間(因爲我有其他的東西在該命名空間,並具有使用該命名空間的文件)。然後看起來編譯器看到靜態類,並決定Foo.Bar.Baz
是一個靜態類,而不是一個名稱空間。
當然,我可以將靜態類重命名爲Manager之類的東西,但是我仍然必須在需要從兩個名稱空間訪問內容的文件中拼寫出完整的Baz.Manager.SomeMethod
和Quux.Manager.SomeMethod
。這感覺相當複雜,我寧願只是它是Baz.SomeMethod
和Quuz.SomeMethod
。
任何想法?
我的想法不是命名類像命名空間 – Jehof
請參閱http://blogs.msdn.com/b/ericlippert/archive/2010/03/09/do-not-name-a-class-the-same- as-its-namespace-part-one.aspx和系列中的後續文章。 –
(有重複的問題,但我現在沒有時間去查找它們。) –