рассмотрите этот простой код
{$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 , но упоминает эти ограничения, Существуют любые документ или статья, в которых упоминаются такие ограничения?