Я импортировал 2 dll в свое приложение (стороннее) Теперь оба они имеют пространство имен с тем же именем. Например, A.B и в обоих из них есть класс снова с тем же именем. Теперь я хочу создать экземпляр одного из них, но поскольку имена и имена классов одинаковы, компилятор становится неоднозначным. Как я могу указать dll dll, используемую в этом месте?
Неоднозначный класс с именами имен в 2 dlls
Ответ 1
Предположим, что у вас есть 2 сборки (ClassLibrary1.dll
и ClassLibrary2.dll
), которые определяют один и тот же класс в одном и том же пространстве имен:
namespace Foo
{
public class Bar
{
}
}
Теперь в проекте потребления вы можете определить дополнительный псевдоним в ссылках библиотеки классов:
И теперь вы можете сделать следующее, чтобы помочь компилятору устранить неоднозначность:
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).