关于delphi:能不能找到一个使用RTTI的实际应用TStringList

Can you find an actual application TStringList using RTTI

我不确定 RTTI 是否真的可以做到这一点,但我想问一下。

我有一个全局单元,它只以 TStringList 的形式保存许多 var 选择列表。通过数据库记录返回一个字符串,能否使用RTTI通过"名称"在单元中找到正确的字符串列表并返回?

1
2
3
4
function GetStringListFromUnitByName(aUnit, aName: String): TStringList;
begin

end;

如果所有字符串列表都作为公共变量存储在一个泛型类中会有帮助吗?

1
2
3
4
5
TMyPickLists = class
public
  FList1: TStringList;
  FList2: TStringList;
end;


无法使用 RTTI 枚举全局变量。您需要按照您的建议使用类的变量。这些可以是实例变量或类变量。

不过,我个人认为这里没有使用 RTTI 的意义。如果是我,我会创建一个字典并在初始化期间将列表添加到字典中:

1
2
3
4
5
6
var
  PickLists: TDictionary<string, TStringList>;
....
PickLists := TDictionary<string, TStringList>.Create;
PickLists.Add('List1', List1);
// etc.