使用 IProvideClassInfo
可连接对象可以提供 IProvideClassInfo 和 IProvideClassInfo2 接口,以便其客户端可以轻松检查其类型信息。 处理传出接口时,此功能非常重要,而传出接口由对象定义,但由客户端在其自己的接收器对象上实现。 在某些情况下,在可连接对象和接收器对象编译时已知传出接口;IPropertyNotifySink 就是这样。
但是,在其他情况下,只有可连接对象在编译时知道其传出接口定义。 在这些情况下,客户端必须获取传出接口的类型信息,以便它可以动态提供支持正确入口点的接收器,如下所示:
- 客户端枚举连接点,然后,若要获取可连接对象支持的传出接口的 IID,请为每个连接点调用 IConnectionPoint::GetConnectionInterface。
- 客户端查询其中一个 IProvideClassInfo 接口的可连接对象。
- 客户端调用 IProvideClassInfo 接口中的方法以获取传出接口的类型信息。
- 客户端创建支持传出接口的接收器对象。
- 该过程继续,客户端调用 IConnectionPoint::Advise 将其接收器连接到连接点。
在类型信息中,属性 source 将 coclass 下列出的接口 interface 或 dispinterface 标记为传出接口。 未列出此属性的接口被视为传入接口。
相关主题