枚举实现指定接口的所有德尔福类?
-
19-09-2019 - |
题
使用新的扩展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
被检索。
编写实际迭代和提取码留给读者作为练习读者。
不隶属于 StackOverflow