假设我有这个:
TClassAncestor = class;
TAbstractGeneric = class;
TGenericContainer<T : TClassAncestor, constructor> = class(TAbstractGeneric);
THoldedClass = class(TClassAncestor);
TMyClass = class(TClassAncestor)
strict private
FExample : TGenericContainer<THoldedClass>;
end;
我想要的是一种检索类字段FExample
中包含的类型的方法,所以在这种情况下,THoldedClass
使用RTTI
。
procedure TryToExtract();
var
ARTTI : TRttiType;
AField : TRttiField;
ATypeData : PTypeData;
begin
ARTTI := TRttiContext.Create().GetType(TMyClass);
for AField in ARTTI.GetFields do
if(AField.FieldType.TypeKind = tkClass) and (AField.Visibility = mvPrivate) then
begin
ATypeData := GetTypeData(AField.FieldType.Handle);
if(ATypeData^.ClassType.InheritsFrom(TAbstractGeneric)) then
begin
//...
end;
end;
end;
我不知道在这一点之后该做什么,所以我感谢任何帮助或建议。