问题描述
对于基本TClass的所有后代,我都需要TClass。
我尝试了以下代码:
type
TClassList = TList<TClass>;
class procedure TClassUtility.collectDescendantClasses( ancestorClass_ : TClass; descendantClasses_ : TClassList );
var
ctx: TRttiContext;
list : TArray<TRttiType>;
typ: TRttiType;
begin
if ( descendantClasses_ <> NIL ) then
begin
ctx := TRttiContext.Create;
try
list := ctx.GetTypes;
for typ in list do
begin
if ( typ.TypeKind = tkInstance ) then
if ( ( ancestorClass_ = NIL ) or ( typ.Classtype.InheritsFrom( ancestorClass_ ) ) ) then
descendantClasses_.Add( typ.Classtype );
end;
finally
ctx.Free
end;
end else
raise Exception.Create('' );
end;
它什么也不收集。所有列表项的typ.Classtype.QualifiedClassName
始终为TRTTIInstanceType
。 typ.Qualifiedname
存储正确的类型名称。但是,如果TClass
是记录本身,我如何访问称为typ.Qualifiedname
的{{1}}?
我无法使用Delphi帮助弄清楚。
解决方法
您需要查看SANCTUM_STATEFUL_DOMAINS="localhost,127.0.0.1"
SESSION_DOMAIN=".sanctum.local"
是否为TRttiInstanceType
类型,是否可以访问其MetaclassType
属性:
typ