Доступ к строгому закрытому полю с использованием RTTI

рассмотрите этот простой код

{$APPTYPE CONSOLE}

uses
  Rtti,
  SysUtils;

type
  {$M+}
  TFoo = class
  strict private
    class var Field1 : Integer;
    field2 :  Integer;
  private
    field3 :  Integer;
    class var Field4 : Integer;
  end;


Var
    ctx : TRttiContext;
    f   : TRttiField;
begin
  try
    ctx:=TRttiContext.Create;

    for f in ctx.GetType(TFoo).GetFields do
     Writeln(f.Name);


    Writeln('Done');
    readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

Когда вы запустите это, только field3 указан. похоже, что RTTI не поддерживает поля, которые относятся к строго закрытому или классу var , поэтому вопросы I Возможен ли доступ к строгому закрытому полю класса delphi с помощью Rtti или другого метода? и я читал документацию по методу RTTI.TRttiType.GetFields , но упоминает эти ограничения, Существуют любые документ или статья, в которых упоминаются такие ограничения?

6
задан Salvador 23 September 2011 в 06:23
поделиться