【发布时间】:2014-11-06 13:38:31
【问题描述】:
我正在编写一个 Rtti 类,旨在简化和概括使用 Rtti 的操作:
tRTTI_Assistant = class (tObject)
private
fSourceObject : tObject;
...
property SourceObject : tObject read fSourceObject write fSourceObject;
...
end;
如何声明将接收记录的属性?
【问题讨论】:
-
从示例中可以看出,
fSourceObject可以是任何对象,无论其结构如何。然后,使用 Rtti 功能,我可以提取结构的所有元素。我需要一种类似的方式来传递任何记录结构,然后以与fSourceObject相同的方式使用 Rtti。 -
如何声明将接收记录的属性?你不能。
-
要回答这个问题,请改用
TValue的属性。使用 RTTI 和TValue,您可以解析有关记录、类等的所有信息。要从记录中获取TValue,请使用TValue.From(MyRecord));。这与How to determine using Rtti, if a field from a class is a Record 或多或少是同一个问题。