代码之家  ›  专栏  ›  技术社区  ›  Jason Kresowaty

大多数对象不支持COM聚合吗?

  •  5
  • Jason Kresowaty  · 技术社区  · 16 年前

    因此,聚合似乎不是通用的,因为在内部对象必须与其他COM对象通信的情况下,它对外部对象提出了严格的要求,即必须转发哪些接口,并且在不破坏与不转发这些接口的现有外部对象的兼容性的情况下不能在内部对象的未来版本中将更多接口添加到此列表中。

    这是对事情实际情况的正确描述(很少有记录),还是故事还有更多内容?

    2 回复  |  直到 16 年前
        1
  •  4
  •   Hans Passant    16 年前

    你关于内部接口创建对象的问题很容易回答。内部接口不应该知道它被聚合了。更重要的是,它不知道是谁聚合了它。因此,它无法知道外部是否对对象有用,或者它是否会正确地委托QI。这不是一个真正的问题,它可以简单地给它一个指向它自己的接口之一的接口指针。聚合并不禁止它。只需要转发未知的接口。

    但是,是的,聚合不是很实用。

        2
  •  1
  •   i_am_jorf    16 年前

    我实现或看到实现的每个COM对象在其create方法中都有无聚合检查。MSFT提供的大多数COM对象不支持聚合。

    推荐文章