jor*_*reg 5 delphi com static properties
是否可以访问COM对象的静态属性而无需创建对象的实例?
我的情况是这样的:我有一个非托管应用程序(用delphi编写).此应用程序公开了一个基于COM的插件接口.到目前为止我只在c#中编写了托管插件.插件通过返回PluginInfo实例(实现IPluginInfo)的静态属性提供其信息(名称,作者,...).我可以使用http://managedvcl.com在托管插件上访问此静态属性.
现在我想在同一个界面上编写非托管插件.我可以使用以下方式加载它
plug := CreateComObject(TGuid) as IMyPlugInterface;
Run Code Online (Sandbox Code Playgroud)
他们跑,但我不知道如何读出他们的PluginInfo.
所以问题是:除了在插件类中实现IPluginInfo并且仅在创建插件实例后访问信息之外,还有其他方法吗?
它可能不像您习惯的 C# 插件体系结构提供的静态属性那么“优雅”,但您可以在 COM DLL 中提供返回 IPluginInfo 的导出函数。按照惯例,此导出函数在每个设计用于在您的体系结构中运行的插件 DLL 中都具有相同的名称。
主机应用程序将在运行时动态获取导出函数的 proc 地址,然后调用它来获取该特定插件 DLL 的 IPluginInfo 接口对象。其机制可以全部封装在插件架构的类中,隐藏实现细节。
只需很少的工作就可以使您的插件架构与您更习惯的 C# 基础架构一样方便使用和编码。