Delphi在类过程中使用反射来获取动态类类型
我希望在类过程/函数(静态方法)中对当前类使用反射。如果不使用“Self”关键字,我怎么办?如果没有harcode,类名:此过程应在子体中重写Delphi在类过程中使用反射来获取动态类类型,delphi,reflection,rtti,Delphi,Reflection,Rtti,我希望在类过程/函数(静态方法)中对当前类使用反射。如果不使用“Self”关键字,我怎么办?如果没有harcode,类名:此过程应在子体中重写 class procedure AAA.SetTableAndSequence; var c : TRttiContext; t : TRttiType; begin c := TRttiContext.Create; try t := c.GetType(Self.ClassType); ... finally c.F
class procedure AAA.SetTableAndSequence;
var
c : TRttiContext;
t : TRttiType;
begin
c := TRttiContext.Create;
try
t := c.GetType(Self.ClassType);
...
finally
c.Free;
end;
end;
您可以使用和:
FWIW,这里的try/finally没有意义
TRttiContext
不是一个类。直接使用c
。它会自动初始化。ClassInfo
返回的值到底是多少?TypeInfo
返回的内容是否相同?哦,谢谢你指出我现在删除的答案是假的。是的,VMT包含一个类的TypeInfo字段(vmtTypeInfo
slot),该字段由ClassInfo
类函数返回。
class procedure AAA.SetTableAndSequence;
var
c: TRttiContext;
t: TRttiType;
begin
t := c.GetType(ClassInfo);
...
end;