强制.net类型实例化为COM
本文关键字:COM 实例化 类型 net 强制 | 更新日期: 2023-09-27 18:04:45
是否可以强制COM Visible . net程序集实例化为System ?__ComObject,而不是它的。net类型?我问的原因是,我的应用程序的一部分使用第三方COM对象,但其中一些,当用。net编写时,被实例化为他们的。net类型,并破坏了我创建的对象处理程序。我无法控制用于创建COM对象的方法。目前,我使用以下代码创建对象:
Type comType = Type.GetTypeFromCLSID(objectGUID);
comObject = Activator.CreateInstance(comType);
谢谢!
其实没有
管理对象的COM激活是在与调用者相同的AppDomain中完成的。恕我直言,这是。net中COM互操作的一个严重问题。有几个问题在这里与各种各样的尝试使这项工作。我可以证明,我已经尝试了这些方法中的大多数,但都无济于事。您的COM API提供商应该生成PIA(主互操作程序集)以确保向前类型兼容性。如果他们不这样做,你将会遇到一些棘手的问题。作为客户端,我所知道的唯一解决方法是只使用"object"类型。一切都需要经过反思。有些事你还是做不到。例如,您将无法实现接口。
我不知道为什么这是这样工作的。在为非托管和托管代码生成可行的api时,它给我带来了无穷无尽的问题。