С# Связанное пространство имен, скрытое в пространстве имен классов
У меня есть класс вроде этого:
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 для пространства имен фреймов