gpt4 book ai didi

delphi - 通过 COM 访问静态属性

转载 作者:行者123 更新时间:2023-12-03 15:13:25 26 4
gpt4 key购买 nike

是否可以在不创建对象实例的情况下访问 COM 对象的静态属性?

我的情况是这样的:我有一个非托管应用程序(用delphi编写)。该应用程序公开了一个基于 COM 的插件接口(interface)。到目前为止,我只用 C# 编写托管插件。插件通过返回 PluginInfo 实例(实现 IPluginInfo)的静态属性提供其信息(名称、作者等)。我可以使用 http://managedvcl.com 在托管插件上访问此静态属性.

现在我想在同一接口(interface)上编写非托管插件。我可以使用以下方式加载它们:

plug := CreateComObject(TGuid) as IMyPlugInterface;

它们运行了,但我不知道如何读出它们的 PluginInfo。

所以问题再次是:除了在插件类中实现 IPluginInfo 并仅在创建插件实例后访问信息之外,还有其他方法吗?

最佳答案

它可能不如您习惯的 C# 插件架构提供的静态属性那么“优雅”,但您可以在 COM DLL 中提供返回 IPluginInfo 的导出函数。按照惯例,此导出函数在每个设计用于在您的体系结构中运行的插件 DLL 中都具有相同的名称。

主机应用程序将在运行时动态获取导出函数的 proc 地址,然后调用它来获取该特定插件 DLL 的 IPluginInfo 接口(interface)对象。此机制可以全部封装在插件架构的类中,隐藏实现细节。

只需花费很少的工作就可以让您的插件架构像您更习惯的 C# 基础架构一样方便使用和编码。

关于delphi - 通过 COM 访问静态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2428222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com