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
相关产品推荐
相关产品推荐

