Вызов метода сборки с использованием его Guid - PullRequest
0 голосов
/ 28 августа 2011

В эти дни я работаю над проектом автоматизации и мне нужно создать фиктивный объект для тестируемого приложения (AUT). Идея состоит в том, чтобы заменить существующий dll новым, который имеет точную структуру, но отличается от Guid. Точная структура необходима для того, чтобы объект AUT мог ссылаться на него.

Создание макета завершается вызовом оригинальной библиотеки DLL из замещающей, когда данные отсутствуют.

Мой вопрос - как я могу ссылаться во время выполнения на одну и ту же сборку с другим Guid? Оригинальный - Delphi Com, а заменяющий - C # Com видимый.

Это общая идея: Содержание dll замены

//File located at C:\RunTime\MyAssembly.exe
namespace MyNameSpace
{
    [ComVisible(true)]
    [GuidAttribute("1")]

    public class MyClass
    {
        public string GetData(bool retrieve, params string[] requestData)
        {
            if (retrieve)
            {
                //Load assembly with Guid 2
                //return the method MyClass.GetData(retrieve, requestData) from Assebly with GuidAttribute = 2)
            }

            return "1,2,3,4,5,6,7,7";
        }
    }
}

Исходное содержание dll

//File located at C:\Dev\MyAssembly.exe
namespace MyNameSpace
{
    [ComVisible(true)]
    [GuidAttribute("2")]

    public class MyClass
    {
        public string GetData(bool retreive, params string[] requestData)
        {
            if (retreive)
                return DoSomething();   //==>Generates data, return a string

            return "This is retrieved data";            
        }
    }
}
...