using Foo.Uber;
namespace MyStuff.Foo
{
class SomeClass{
void DoStuff(){
// I want to reference the outer "absolute" Foo.Uber
// but the compiler thinks I'm refering to MyStuff.Foo.Uber
var x = Foo.Uber.Bar();
}
}
}
我怎么能解决这个问题?只是在命名空间中移动using语句也无济于事。
答案 0 :(得分:23)
您可以使用namespace alias qualifier(通常为global::
)来引用默认/ root命名空间:
global::Foo.Uber
答案 1 :(得分:4)
您实际上可以通过root namespace
指定完整路径var x = global::Foo.Uber.Bar();
命名空间概述
命名空间具有以下内容 属性:
他们组织大型代码项目。
他们与。分开。操作
using指令表示您无需指定其名称 每个类的命名空间。
全局命名空间是“根”命名空间: global :: system 将始终引用.NET 框架命名空间系统。
我更喜欢这个别名,因为当你阅读它时,你确切知道发生了什么。如果你跳过定义,别名很容易被误解。
答案 2 :(得分:3)
使用using语句中的命名空间:
using ThatOuterFoo = Foo.Uber;
...
...
//Some time later...
var x = ThatOuterFoo.Bar();
答案 3 :(得分:3)
using Outer = Foo.Uber;
namespace MyStuff.Foo
{
class SomeClass{
void DoStuff(){
var x = new Outer.Bar(); //outer class
}
}
}
答案 4 :(得分:2)
使用Aliasesesesesese
using Foo.Uber;
using FooUberBar = Foo.Uber.Bar
namespace MyStuff.Foo
{
class SomeClass{
void DoStuff(){
// I want to reference the outer "absolute" Foo.Uber
// but the compiler thinks I'm refering to MyStuff.Foo.Uber
var x = FooUberBar();
}
}
}
答案 5 :(得分:1)
您可以按照MSDN中所述在using指令中指定别名。