C#extern别名

时间:2011-09-21 14:26:04

标签: c# extern csc

我有两个具有完全相同接口的程序集(我们称之为Assem1和Assem2)

是否可以使用extern别名来从Assem2调用Assem1的方法?

源代码是这样的:

//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。 互联网上的所有示例都使用C#中的extern别名指定给一个程序集,引用具有相同接口的两个程序集,但不是从一个到另一个程序集。

0 个答案:

没有答案