使用该工具导入基本类型库tlbimp.exe
总是会为每个coclass
. 例如这个 IDL 描述
interface IFoo : IUnknown
{
HRESULT DoSomething();
}
coclass Bar
{
[default] interface IFoo;
}
结果是:
- 一个接口
IFoo
作为 COM 接口的表示, BarClass
作为 COM coclass 的表示的类和- 一个接口
Bar
,用CoClassAttribute
.
Bar
和的 GUIDIFoo
相等的地方。MSDN关于这个主题的状态:
此接口与 coclass 的默认接口具有相同的 IID。使用此接口,客户端始终可以注册为事件接收器。
这是我在这个主题上发现的唯一内容。我知道,由于CoClassAttribute
,我可以使用接口来创建实际类的实例。我也知道(实际上)我可以简单地使用它BarClass
来创建类的新实例。我不明白的是,为什么导入过程会生成Bar
接口,即使coclass
没有定义事件源,因此没有事件接收器可以连接到它。
是否可以删除此示例中的Bar
接口1或是否还有其他风险,我尚未考虑?
1 例如通过拆卸互操作组件。