使用Guid调用Assembly方法

时间:2011-08-28 14:30:26

标签: c# com automation

这些天我正在从事自动化项目,需要为被测应用程序(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";            
        }
    }
}

0 个答案:

没有答案