Я нахожу некоторое разочарование тем, как C # обрабатывает пространства имен, когда я хочу сослаться на класс, имя класса которого совпадает с частью пространства имен текущего класса. Это приведет к ошибке компилятора: «Класс» является пространством имен, но используется как тип ».
Рассмотрим следующий пример кода, который демонстрирует проблему:
namespace A.B.C
{
public class Y
{
}
}
namespace X.Y.Z
{
public class Class1
{
public Y MyProp;
}
}
В этомВ этом случае я хочу использовать класс "Y" из пространства имен "ABC". Но поскольку «Y» также является одной из частей пространства имен, C # рассматривает «Y» как пространство имен, а не как тип.
Я могу обойти это, полностью указав имя класса «ABCY» или используя псевдоним, но я бы предпочел, чтобы C # не рассматривал «Y» как пространство имен в этом контексте. Часто у меня есть код, такой как тестовый код, который содержит те же пространства имен, что и классы, которые он тестирует, и такого рода коллизия классов / пространств имен означает, что мне нужно быть гораздо более многословным при настройке.
Я неконечно, как называется этот процесс, но кажется, что при разрешении классов и пространств имен C # будет проходить вверх по пространствам имен, пока не найдет часть пространства имен, которая соответствует. В этом случае он подходит и находит Y. Есть ли способ сказать C # не ходить, не разрешать это частичное совпадение пространства имен?