C# C外部别名

C# C外部别名,c#,extern,csc,C#,Extern,Csc,我有两个具有完全相同接口的程序集,让我们称它们为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 //Asse

我有两个具有完全相同接口的程序集,让我们称它们为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。
internet上使用C中外部别名的所有示例都指定给一个程序集,引用具有相同接口的两个程序集,但不是从一个程序集到另一个程序集。

您的意图是什么?也许任何人都可以用更干净的体系结构来回答…我需要为应用程序测试创建模拟管理器来模拟exe服务。此对象从其数据源获取用户请求并根据请求参数返回响应。当它找不到相关的响应时,它会使用外部服务来生成这些数据。我看不出为什么这样做不起作用。当你尝试它时发生了什么?@EricLippert:很抱歉反应太晚。问题是,在引用第一个程序集之后,在运行时无法再引用第二个程序集。原因是第一次注册。解决方案是在任何调用之前取消注册对象。我认为如果两个程序集具有不同的名称,这是可能的。