让我详细说明一下,在有人向我发出轰鸣声之前,不要重复使用COM界面!"
我们在已停止的程序上实现了COM接口。我们现在实际上从第三方购买了类似的软件(所以我无法改变它!)
许多(第三方)程序仍在使用COM接口。现在我必须将新软件与这些程序集成(我不能因为它们是第三方而改变)。
所以我认为我需要一个代理:这个代理将重用COM接口,因此没有任何第三方程序能够告诉他们不与已停产的软件交谈。在COM对象内部,我将翻译'命令并将它们转发给新的软件。
我使用C#构建我的代理,并且我已经使用tlbimp.exe从旧程序的类型库生成DLL。
我在COM项目中引用了这个生成的DLL,我为给定的接口提供了一个实现。 接下来,我从我的项目中注册输出DLL并使用旧客户端来调用代理。
它返回错误:无法转换类型' Lib.ApiClass'的对象输入' Lib.ApiClass'。
为什么? 我应该采用不同的方法吗?