这些天我正在从事自动化项目,需要为被测应用程序(AUT)创建一个模拟对象。 这个想法是用一个新的dll替换现有的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";
}
}
}