Вопрос по instance, c#, ddl – неоднозначный класс с именами пространства имен в 2 dll

18

Я импортировал 2 DLL в свое приложение (третье лицо) Теперь у них обоих есть пространство имен с одинаковым именем. Например, А.Б. и в обоих из них снова есть класс с тем же именем. Теперь я хочу создать экземпляр одного из них, но поскольку пространства имен и имена классов совпадают, компилятор выглядит неоднозначно. Как я могу указать ведьму, используемую в месте?

если приведенные ниже ответы не сработают, вы снова напутали :) swapneel
К счастью, один из них работает :-) Darin Dimitrov

Ваш Ответ

2   ответа
33

Предположим, у вас есть 2 сборки (ClassLibrary1.dll а такжеClassLibrary2.dll) которые оба определяют один и тот же класс в одном и том же пространстве имен:

namespace Foo
{
    public class Bar
    {
    }
}

Теперь в потребляющем проекте вы можете определить дополнительный псевдоним в ссылках библиотеки классов:

enter image description here

И теперь вы можете сделать следующее, чтобы помочь неоднозначности компилятора:

extern alias lib1;
extern alias lib2;

class Program
{
    static void Main()
    {
        var barFromLib1 = new lib1::Foo.Bar();
        var barFromLib2 = new lib2::Foo.Bar();
    }
}
Это было похоже на проблему, с которой я столкнулся, но в моем случае это был мой собственный код (небольшой вспомогательный класс), который мне нужно было использовать в 2 разных DLL, которые в свою очередь использовались EXE-файлом. Решение Дарина отлично сработало! Благодарю.
-1

Просто небольшое улучшение или расширенная информация: если вы используете несколько раз, строка «extern alias lib1;» должна быть самой первой из этих ссылок (но MS VS также информирует вас об этом).

Ваш ответ не дает ответа на вопрос. Пожалуйста, внимательно прочитайте вопрос

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