You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 10.3中如何获取泛型类型T对应的TRTTIType

解决Delphi 10.3泛型函数中获取TRTTIType的问题

嘿,这个场景我太熟悉了!在Delphi 10.3里要获取泛型类型参数T对应的TRTTIType,只需要一行简单的代码就能搞定,直接给你补全后的完整函数:

function getGenericTypeName<T> : string;
var
  ctx : TRTTIContext;
  aRT : TRTTIType;
begin
  ctx := TRTTIContext.Create;
  try
    aRT := ctx.GetType(TypeInfo(T)); // 补全的核心代码
    result := aRT.Name;
  finally
    ctx.Free;
  end;
end;

关键细节说明:

  • TypeInfo(T):这是Delphi内置的函数,能直接获取泛型类型参数T的类型信息指针,这是RTTI操作的核心入口。
  • ctx.GetType():TRTTIContext的GetType方法接收类型信息指针后,会返回对应的TRTTIType实例,通过它你不仅能拿到类型名称,还能获取字段、方法、属性等各类元数据。

额外注意点:

  • 确保项目启用RTTI支持:Delphi默认会为多数类型开启RTTI,但如果手动通过{$RTTI}编译指令关闭过,需要重新开启,否则函数可能返回空或抛出异常。
  • 对于动态数组、匿名方法这类特殊类型,TypeInfo(T)也能正确返回对应的类型信息,GetType方法会自动处理这些场景。

内容的提问来源于stack exchange,提问作者SOLID Developper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:33:12