gpt4 book ai didi

delphi - 枚举实现给定接口(interface)的所有 Delphi 类?

转载 作者:行者123 更新时间:2023-12-03 14:45:23 27 4
gpt4 key购买 nike

通过 Delphi 2010 中新扩展的 RTTI,Delphi 应用程序(在运行时)可以构建实现给定接口(interface)的所有类的列表吗?

最佳答案

技术上是可以的,只要接口(interface)有 GUID 并且您关心的类位于单元的接口(interface)部分中即可。

RTTI 单元(尚)没有用于描述类实现的所有接口(interface)的 API,但数据位于类型信息中。

可以从此表达式获取接口(interface)类型的 GUID:

GetTypeData(TypeInfo(ITheInterface))^.Guid

或者:

ctx: TRttiContext;
// ...
(ctx.GetType(TypeInfo(ITheInterface)) as TRttiInterfaceType).GUID

然后可以使用TClass.GetInterfaceEntry(IID)检查实例类型的类 - 如果它返回非零,则该类实现该接口(interface)。

可以通过TRttiContext.GetTypes检索在单元的接口(interface)部分中声明的所有类。

编写实际的迭代和提取代码留给读者作为练习。

关于delphi - 枚举实现给定接口(interface)的所有 Delphi 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2214741/

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