繁体   English   中英

强制.NET类型实例化为COM

[英]Force .NET type to instantiate as COM

是否可以强制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( 主互操作程序集 )以确保正向类型兼容性。 如果他们不是,你将有一些讨厌的问题。

我知道作为客户端的唯一解决方法是仅使用“对象”类型。 一切都需要经历反思。 有些事情你还是做不到。 例如,您将无法实现接口。

我不知道为什么这样工作。 这导致我无法为非托管代码和托管代码生成可行的api。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM