代码之家  ›  专栏  ›  技术社区  ›  David Cornelius

我找到了ComClass,现在我该如何引用它?

  •  3
  • David Cornelius  · 技术社区  · 12 年前

    我用Delphi2010编写了一个小型COM服务器,它可以作为零售应用程序的插件。零售应用程序寻找一个“发现”接口,该接口注册任何数量的额外接口,调用 TAutoObjectFactory.Create 对于每一个。这运行得很好——所有插件接口都按设计运行。

    但现在我想从另一个接口调用一个接口的公共方法,这样我就不必重复代码了。看起来很简单,只要打电话 ComClassManager.ForEachFactory 查找我需要使用的接口的ClassID。也成功了!

    但现在我找到了这个类,我被一个看似微不足道的最后一步难住了:如何使用或强制转换我找到的类(或类引用?)来实际调用它的一个方法。

    在我发送到的“FactoryProc”中 ForEachFactory ,我假设的ComClass属性 TComObjectFactory 是我想要的,但它的类型是TClass,一个对它所指向的实际类对象的类引用(至少我希望我能正确理解这一点)。我对类引用有点模糊,试图强制转换或以其他方式取消引用此属性导致了访问冲突或编译器错误。

    有什么建议吗?

    1 回复  |  直到 12 年前
        1
  •  3
  •   Ondrej Kelle    12 年前

    你的评论是对的, ComClassManager 处理类,而不是实例。您需要的是(您的应用程序的本地实现) running object table (或类似的东西),因此插件实例可以相互交互。

    如何实际实现它取决于您真正需要的东西,例如,在所有运行的实例上调用方法,或者只在特定类的实例上。