我有一个这样的课程:
namespace Token1.Token2.Token3
{
public class Class1
{
}
}
还有另外一个类:
namespace Token2.Token4.Token5
{
public class Class1
{
}
}
第一个类是我项目的一部分,第二个类来自我组织中另一个组开发的框架库。注意第一个类的名称空间在第二个位置有Token2,第二个类的名称空间在第一个位置有Token2。
我遇到的问题是我似乎无法在第一个类中引用第二个类,因为看起来像命名空间冲突。如果我尝试在第一堂课中这样做:
namespace Token1.Token2.Token3
{
public class Class1
{
var frameworkClass1 = new Token2.Token4.Token5.Class1();
}
}
Visual Studio IDE以红色突出显示Token4并说“#34;无法解析符号' Token4'"。如果我将鼠标悬停在Token2上,我是新手并且在Class1上,intellisense会显示我"命名空间Token1.Token2"所以它清楚地看到了我的项目类的命名空间,而没有看到我的框架类的命名空间。
由于已有的代码量,更改任一类库的名称空间将非常困难。有办法解决这个问题吗?
答案 0 :(得分:25)
由于Token2
也是Token1
的子命名空间,因此您需要指定您正在寻找" root"名称空间:
var frameworkClass1 = new global::Token2.Token4.Token5.Class1();
您也可以使用using
语句对其进行别名:
using Token5 = global::Token2.Token4.Token5;
然后只引用别名:
var frameworkClass1 = new Token5.Class1();
答案 1 :(得分:3)
您可以尝试使用global :: Token2作为框架命名空间