我有两个具有完全相同接口的程序集(我们称之为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别名指定给一个程序集,引用具有相同接口的两个程序集,但不是从一个到另一个程序集。