我有两个具有完全相同接口的程序集(我们称它们为 Assem1 和 Assem2)
是否可以使用外部别名从 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# 中的外部别名的示例都指定一个程序集,指的是具有相同接口的两个程序集,但不是从一个到彼此。