【发布时间】:2010-11-22 00:48:47
【问题描述】:
我有一个描述一些接口的类型库。由于其中一些接口用作类别,因此我想将类别 ID 添加到类型库中。所以问题是:
a) 在 Delphi(2007 年及更高版本)中如何做到这一点?
或作为替代
b) 是否可以且建议将接口 GUID 用于 CATID?
【问题讨论】:
我有一个描述一些接口的类型库。由于其中一些接口用作类别,因此我想将类别 ID 添加到类型库中。所以问题是:
a) 在 Delphi(2007 年及更高版本)中如何做到这一点?
或作为替代
b) 是否可以且建议将接口 GUID 用于 CATID?
【问题讨论】:
对于a),我不知道Delphi。但在 C++ 中,它只是将接口描述添加到 MIDL 文件中。由于您似乎真的只使用接口,您可能也不需要 CoClass 实现,所以这已经足够了。基本上,您是如何将其他接口添加到类型库的?现在就用同样的方法。
[编辑]我找到了一个关于使用 typelib-editor 的简短教程。似乎添加接口只是关键字正确的问题。[/edit]
至于 b),我认为使用接口作为类别 ID 没有任何问题,但这个问题有点模糊......因为可能的类别集是固定的,并且您不使用一些继承,例如行为(至少我认为你说你使用接口 GUID,而不是接口本身),为什么不只使用枚举器?使用接口等似乎是一个过度设计的解决方案,除非接口真的是这样使用的,即提供对某些特定类别行为的访问。
[编辑]当您在谈论 ICatRegister 等人时,我明白您为什么要使用 GUID。由于类别 GUID 与 COM 接口 GUID 位于不同的命名空间中,因此当然要使用相同的命名空间。无论如何,您的界面 GUID 必须在与类别 ID 相同的范围内是唯一的,并且具有 1:1 映射似乎也是一种简单的维护模型。[/edit]
【讨论】: