Неоднозначный класс с именами имен в 2 dlls - программирование
Подтвердить что ты не робот

Неоднозначный класс с именами имен в 2 dlls

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

4b9b3361

Ответ 1

Предположим, что у вас есть 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

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