Вопрос по namespaces, c#, .net, msbuild, assembly-resolution – Используйте типы с одинаковым именем и пространством имен в 2 сборках .NET

12

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

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

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

Ваш Ответ

2   ответа
1

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

10

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

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...

Похожие вопросы