COM类和Co类有什么区别?

3
维基百科的COM文章对这个问题不太明确。可能有没有人能够给出一个适合COM初学者的解释,或者提供相同内容的文章链接。

同样的事情。我怀疑他们选择“coclass”是为了将其与编程语言中的类分开。非常不同,一个coclass不公开任何实现。只有在运行时使用QI发现接口。 - Hans Passant
Don Box 的《Essential COM》是标准的入门参考书。 - i_am_jorf
3个回答

1

这让我以以下方式思考:

对我而言,COM类是实现某个接口的类的实例。只要它按预期工作,我不需要知道实现方式。此外,COM类不依赖于语言 - 它是方法的描述。

Co-Class是一个实际的实现,在请求COM类时进行实例化。

例如:COM类可以定义加密或解密数据的方法。可能会有两个Co-Class,每个类都使用特殊的加密算法。


仍然不清楚什么是类。它是否被认为支持特定的接口集? - valdo
我对一个类如何既可以是实例又可以只是方法描述感到困惑。后者听起来像是接口。 - Duncan3142
是的,我也是这么理解的。一个COM类基本上就是一个接口,而Co-Class则是其实现。 - Thorsten Dittmar
那么,COM接口是什么呢?例如:IUnknown。 - Duncan3142

1

coclass 只是一个类的类型库声明。对于类实现的接口没有任何假设(除了可能是 IUnknown,否则该类就没有意义),但是如果声明引用类型库中的某些接口,则预期实际实例将实现这些接口。


1
谢谢,但您能解释一下这与类有何不同吗? - Duncan3142

0
回答你的问题,coclass 代表“组件对象类”,与“COM 类”是同一概念。您提供的维基百科链接已经明确解答了这个问题:

COM 类(coclass)是……


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接