问题
I want use reflection on the current class inside a class procedure/function (static method). How can I do without using the "Self" keyword? And without harcode the class name: this procedure should be override in the descendants.
class procedure AAA.SetTableAndSequence;
var
c : TRttiContext;
t : TRttiType;
begin
c := TRttiContext.Create;
try
t := c.GetType(Self.ClassType);
...
finally
c.Free;
end;
end;
回答1:
You can use ClassInfo and GetType:
class procedure AAA.SetTableAndSequence;
var
c: TRttiContext;
t: TRttiType;
begin
t := c.GetType(ClassInfo);
...
end;
来源:https://stackoverflow.com/questions/24559016/delphi-use-reflection-in-a-class-procedure-for-the-getting-dynamic-class-type