简体   繁体   中英

C# Referenced Namespace Hidden By Class Namespace

I have a class like this:

namespace Token1.Token2.Token3
{
    public class Class1
    {
    }
}

And another class like this:

namespace Token2.Token4.Token5
{
    public class Class1
    {
    }
}

The first class is a part of my project, the second class is from a framework library developed by another group within my organization. Notice the namespace of the first class has Token2 in the second place and the namespace of the second class has Token2 in the first place.

The problem I am having is that I can't seem to reference the second class within the first because of what looks like a namespace collision. If I try to do this in the first class:

namespace Token1.Token2.Token3
{
    public class Class1
    {
        var frameworkClass1 = new Token2.Token4.Token5.Class1();
    }
}

the Visual Studio IDE highlights Token4 in red and says "Cannot resolve symbol 'Token4'". If I hover my mouse over Token2 where I am new'ing up Class1, intellisense shows me "namespace Token1.Token2" so it is clearly seeing the namespace of my project class and not seeing the namespace of my framework class.

It would be very difficult to change the namespace of either class library due to the amount of code already in place. Is there a way to get around this?

Since Token2 is also a sub-namespace of Token1 you need to specify that you're looking for the "root" namespace:

var frameworkClass1 = new global::Token2.Token4.Token5.Class1();

You could also alias it with a using statement:

using Token5 = global::Token2.Token4.Token5;

And then just reference the alias:

var frameworkClass1 = new Token5.Class1();

您可以尝试使用global :: Token2作为框架命名空间

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM