С# Связанное пространство имен, скрытое в пространстве имен классов

У меня есть класс вроде этого:

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 красным цветом и говорит: "Не удается разрешить символ" Token4 ". Если я наводил указатель мыши на Token2, где я новичок в Class1, intellisense показывает мне" namespace Token1.Token2", поэтому он явно видит пространство имен моего класса проекта и не видит пространство имен моего класса framework.

Было бы очень сложно изменить пространство имен библиотеки классов из-за того, что код уже установлен. Есть ли способ обойти это?

Ответы

Ответ 1

Так как Token2 также является пространством под-имен Token1, вам нужно указать, что вы ищете "корневое" пространство имен:

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

Вы также можете написать его с помощью инструкции using:

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

И тогда просто укажите псевдоним:

var frameworkClass1 = new Token5.Class1();

Ответ 2

Вы можете попробовать global:: Token2 для пространства имен фреймов