C # внешний псевдоним - PullRequest
0 голосов
/ 21 сентября 2011

У меня есть две сборки с одинаковым интерфейсом (назовем их 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 #, указаны для одной сборки, ссылаясь на две сборки с одинаковым интерфейсом, но не на одну другую.

...