Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 393
meyousikmann Avatar asked Jun 16 '15 15:06

meyousikmann


2 Answers

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();
like image 174
D Stanley Avatar answered Oct 20 '22 14:10

D Stanley


You could try global::Token2 for the framework namespace

like image 43
Ferdinand Swaters Avatar answered Oct 20 '22 16:10

Ferdinand Swaters