Используйте типы с одинаковым именем и пространством имен в 2 сборках .NET

Из любопытства я создал 2 сборки, каждая из которых имеет класс (Class1) с точно таким же пространством имен (Library1). Затем я создаю другой клиент, ссылающийся на эти 2 сборки, и пытаюсь создать экземплярClass1.

Неудивительно, что компилятор дает мне ошибку компиляции о неоднозначной ссылке. Есть ли способ явно указать тип в сборке, которую я хочу использовать, чтобы избежать двусмысленности?

Примечание: я знаю это редко, если вообще когда-либо случается на практике. Это просто вопрос из любопытства по поводу языковых особенностей.

Ответы на вопрос(2)

внешний псевдоним не всегда может решить проблему. Вот один пример того, где это проблемаДублирующиеся пространства имен.

Решение Вопроса

внешний псевдоним обернуть пространства имен сборки за пределами глобального пространства имен. Вот как:

In the project that references the 2 assemblies, select one of them under References, and in the Properties window change the Aliases value from global to, say, global, Library1a.

Do the same for the the other reference, but give it a different alias-- let's go with global, Library1b for our example.

Insert extern alias Library1a; and/or extern alias Library1b; as the first 2 lines of any classes that consume the assemblies.

When accessing ambiguous members, qualify the namespace with Library1a. or Library1b.. Examples: Library1a.Library1.Class1... Library1b.Library1.Class1...

Ваш ответ на вопрос