Как получить поле доступа в Delphi с помощью RTTI? - PullRequest
6 голосов
/ 12 октября 2009

Рассмотрим следующее:

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
    );

Может быть, есть другие способы получения значений полей, которые являются экземплярами других классов?

1 Ответ

6 голосов
/ 12 октября 2009

Вы должны передать экземпляр в качестве параметра GetValue, например

vField.GetValue(self);

Для лучшего понимания Rtti прочитайте замечательные статьи о RTTI Роберта Лава. Для этой проблемы специально этот вопрос о Свойства и поля .

...