使用 IProvideClassInfo

可连接对象可以提供 IProvideClassInfoIProvideClassInfo2 接口,以便其客户端可以轻松检查其类型信息。 处理传出接口时,此功能非常重要,而传出接口由对象定义,但由客户端在其自己的接收器对象上实现。 在某些情况下,在可连接对象和接收器对象编译时已知传出接口;IPropertyNotifySink 就是这样。

但是,在其他情况下,只有可连接对象在编译时知道其传出接口定义。 在这些情况下,客户端必须获取传出接口的类型信息,以便它可以动态提供支持正确入口点的接收器,如下所示:

  1. 客户端枚举连接点,然后,若要获取可连接对象支持的传出接口的 IID,请为每个连接点调用 IConnectionPoint::GetConnectionInterface
  2. 客户端查询其中一个 IProvideClassInfo 接口的可连接对象。
  3. 客户端调用 IProvideClassInfo 接口中的方法以获取传出接口的类型信息。
  4. 客户端创建支持传出接口的接收器对象。
  5. 该过程继续,客户端调用 IConnectionPoint::Advise 将其接收器连接到连接点。

在类型信息中,属性 sourcecoclass 下列出的接口 interfacedispinterface 标记为传出接口。 未列出此属性的接口被视为传入接口。

可连接对象接口

提供类信息