繁体   English   中英

根据值比较两个COM接口实例

[英]Compare two instance of COM interface based on value

是否存在关于如何根据两个COM对象的值(即私有状态)而不是其标识(即指向IUnknown的指针)比较两个COM对象的模式?

对象相等是一个沉重的实现细节,而这个细节在COM中已经很好地隐藏了。 COM是基于接口的对象模型,这些接口需要实现的事实已被仔细隐藏。 它仅出现在几个地方,CoCreateInstance()是显而易见的地方。 IUnknown的规则不太明显。 谁的正确实现要求通过任何已实现的接口进行QI时,您将获得相同的IUnknown接口指针。 这提供了对象身份,而不是对象相等性。

没有通常用于测试对象相等性的标准COM接口类型。 您只需要自己制作即可。 一个具有IsEqualTo()方法的简单方法即可完成工作。 或者,您可以将该方法添加到默认界面中。

这取决于“私人国家”的定义。 一个COM对象不必具有一个。 如果对象实现IPersist*系列接口,尤其是。 IPersistStreamInit ,那么您可以它们保存到持久流或属性包中,然后直接比较存储,例如流的逐字节比较。

暂无
暂无

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

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