gpt4 book ai didi

delphi - Rtti 不适用于用作类字段的泛型类型

转载 作者:行者123 更新时间:2023-12-03 14:52:49 26 4
gpt4 key购买 nike

我在使用 rtti 获取有关泛型类型的类字段的信息时遇到问题。经过一番谷歌搜索后,我在 QC 中找到了一个条目描述问题。我的问题是,是否有人知道解决方法,或者是否已修复 Delphi XE2。以下是 QC 重现该错误的源代码片段。

program Generics;

{$APPTYPE CONSOLE}

uses
Generics.Collections, Rtti, SysUtils;

type
TIntList = TList<Integer>;

TRecContainer = record
FList: TIntList;
end;

TObjContainer = class
FList: TIntList;
end;

var
ctx: TRttiContext;
f: TRttiField;

begin
ctx := TRttiContext.Create;
try
for f in ctx.GetType(TypeInfo(TRecContainer)).GetFields do
if f.FieldType <> nil then
writeln(f.FieldType.Name)
else
writeln('f.FieldType = nil');
for f in ctx.GetType(TypeInfo(TObjContainer)).GetFields do
if f.FieldType <> nil then
writeln(f.FieldType.Name)
else
writeln('f.FieldType = nil');
finally
ctx.Free;
readln;
end;
end.

最佳答案

不幸的是,这个错误在 Delphi XE2 中仍然存在,作为解决方法,您可以像这样声明 TIntList 类型

TIntList = class(TList<Integer>);

关于delphi - Rtti 不适用于用作类字段的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8405031/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com