我有一个有几个名称空间的结构,并且在每个名称空间中,我有一个静态类,它是该名称空间的网络中的一个小型小蜘蛛。像部门主管一样。名称空间和类之间的名称冲突
我们以两个命名空间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和系列中的后续文章。 –
(有重复的问题,但我现在没有时间去查找它们。) –