C#引用名称空间隐藏类名称空间

时间:2015-06-16 15:27:51

标签: c# visual-studio

我有一个这样的课程:

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"所以它清楚地看到了我的项目类的命名空间,而没有看到我的框架类的命名空间。

由于已有的代码量,更改任一类库的名称空间将非常困难。有办法解决这个问题吗?

2 个答案:

答案 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作为框架命名空间