6

考虑以下:

TFieldType = class
  fValue: string;
end;

TMainClass = class
private
  Ffield: TFieldType;
public
  function GetValue: string;
end;

在 TMainClass.GetValue 我尝试获取 TMainClass 字段的值:

function TMainClass.GetValue;
begin
  vCtx := TRTTIContext.Create;
  vType := vCtx.GetType(Self.ClassInfo);
  for vField in vType.GetFields do
    vField.GetValue(
        //Here's the trouble, because i don't know how to get the instance
    );

可能有另一种获取字段值的方法,这些字段是另一个类的实例?

4

1 回答 1

6

您必须将实例作为 GetValue 的参数传递,例如

vField.GetValue(self);

为了更好地理解 Rtti,请阅读Robert Love撰写的关于 RTTI 的精彩文章。对于这个问题,特别是关于Properties 和 Fields的问题。

于 2009-10-12T08:43:28.460 回答