3

我正在创建一个具有 Array(Array of ) 类型成员的通用列表类。问题是类破坏,因为该类应该用于从字节到继承TObject的类型的类型。

具体来说:

destructor Destroy;
var elem:T;
begin
  /*if(T is Tobject) then  //Check if T inherits TObject {Compiler error!}
    for elem in FData do TObject(elem).Free;*/    // do not know how to do it

  SetLength(FItems,0); //FItems : Array of T
  inherited Destroy;
end;

例如,如果类型标识符是一个类,我如何检查 T 是否是 TObject 以便我可以释放每个成员?

4

1 回答 1

3

您可以使用 TypeInfo 编译器魔术函数获取类型 T 的类型信息。它返回一个指针,您可以将其强制转换为在 TypInfo 单元中声明的 PTypeInfo。所以:

if PTypeInfo(typeInfo(T)).Kind = tkClass then
  //do whatever
于 2010-04-24T16:51:08.583 回答