使用新的扩展RTTI在2010年的Delphi,可以Delphi应用程序(在运行时)建立,其实现给定接口的所有类的列表?

有帮助吗?

解决方案

技术上是可以的,只要该接口具有一个GUID和你所关心的类的单位的界面部分。

在RTTI单元不(还)具有API用于描述所有接口一个类可实现,但数据是在类型信息。

有一个接口类型的GUID可以从这个表达式得到:

GetTypeData(TypeInfo(ITheInterface))^.Guid

或:

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top