У меня есть две сборки с одинаковым интерфейсом (назовем их Assem1 и Assem2)
Можно ли использовать внешний псевдоним для вызова методов Assem1 из Assem2?
Исходный код выглядит примерно так:
//Pre steps - set Reference in Assem1 to assem2 and set it's alias to Assem2Alias
//Both assemblies named MyAssembly.dll, has exact same interface but different Guids
//Assem1 code
extern alias Assem2;
using Assem2 = Assem2Alias.MyAssembly;
namespace MyAssembly
{
public class MyClass
{
public int Foo()
{
return new Assem2.MyClass().Foo();
}
}
}
//Assem2 code
namespace MyAssembly
{
public class MyClass
{
public int Foo()
{
return 10;
}
}
}
Отредактировано:
По запросу - я добавляю дополнительную информацию относительно общего задания:
Мне нужно протестировать приложение, которое использует ActiveX.exe для получения данных (ответов) от внешних служб.
Моя задача - заменить этот ActiveX.exe, чтобы я мог контролировать ответы.
Поскольку ответы представляют собой большие текстовые данные, я бы сгенерировал запрос, используя оригинальный файл ActiveX.exe.
Новая сборка (Assem1 в моем вопросе) должна иметь тот же интерфейс, что и исходный ActiveX.exe (Assem2).
Общая идея: Assem1 получает запрос от протестированного приложения. Если запрос соответствует ответу в его источнике данных -> он читает ответ и возвращает его приложению. Если он не совпадает ни с одним из ответов, то Assem1 запрашивает у Assem2 ответ, добавляет его в свой источник данных и отвечает тестируемому приложению.
Как уже упоминалось, оба должны иметь одинаковый интерфейс, поэтому я использую псевдоним extern для ссылки на исходный файл ActiveX.exe.
Все примеры в Интернете, использующие псевдоним extern в C #, указаны для одной сборки, ссылаясь на две сборки с одинаковым интерфейсом, но не на одну другую.