Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Wie finde ich per RTTI eine Klassenvariable?

  Alt 22. Sep 2016, 19:52
Delphi-Version: 10 Seattle
Folgender Code
Delphi-Quellcode:
program Project15;

{$APPTYPE CONSOLE}

{$R *.res}

uses System.Rtti;

type

   TMyClass = class
      public var someField: Integer;
      public class var someClassField: Integer;

      public procedure someProcedure(); virtual; abstract;
      public class procedure someClassProcedure(); virtual; abstract;
   end;

var
   ctx: TRttiContext;
   field: TRttiField;
   method: TRttiMethod;
begin
   TMyClass.Create(); // Damit der Compiler es nicht weg-optimiert...

   ctx := TRttiContext.Create();
   WriteLn('fields:');
   for field in ctx.GetType(TMyClass).GetFields() do
      WriteLn(field.Name);

   WriteLn(sLineBreak, 'methods:');
   for method in ctx.GetType(TMyClass).GetDeclaredMethods() do
      WriteLn(method.Name);

   readln;
end.
findet beide Methoden aber nur die Variable "someField", nicht aber "someClassField". Woran liegt das? Wie kann ich es finden?
  Mit Zitat antworten Zitat