gpt4 book ai didi

delphi - 在 Delphi 中将 TObjectList 祖先转换为通用集合

转载 作者:行者123 更新时间:2023-12-03 15:47:04 25 4
gpt4 key购买 nike

我有课

TMyAwesomeList = class(TObjectList)

其中包含

 TAwesomeItem = class(TPersistent)

其中 TAwesomeItem 几乎是

的抽象类
 TAwesomeItem1 = class(TAwesomeItem)
TAwesomeItem2 = class(TAwesomeItem)
TAwesomeItem3 = class(TAwesomeItem)
TAwesomeItem3a = class(TAwesomeItem3)

等等(大约 30 个子类,其中有一些中间抽象类),它们完成了我一年前实现的一些对象关系建模,预计最终从 Delphi 7 转换到 2009(很快就会转换为 XE2)。

该代码在 Delphi 2009 中仍然有效,但我想做一个

 for AwesomeItem3a in AwesomeList do
begin
//something awesome
end;

而且我不知道如何重构 TMyAwesomeList (或添加几个子类)来完成这项工作。

最佳答案

根据您的评论,似乎您可以直接使用 TObjectList

var
MyAwesomeList1: TObjectList<TMyAwesomeItem1>;
MyAwesomeItem1: TMyAwesomeItem1;
begin
MyAwesomeList1 := TObjectList<TMyAwesomeItem1>.Create;
try
// populate the list...

for MyAwesomeItem1 in MyAwesomeList1 do
...
finally
MyAwesomeList1.Free;
end;
end;

...与 TMyAwesomeItem2 等相同。如果您愿意,还可以声明类型别名:

type
TMyAwesomeList1 = TObjectList<TMyAwesomeItem1>;
TMyAwesomeList2 = TObjectList<TMyAwesomeItem2>;
// etc.

关于delphi - 在 Delphi 中将 TObjectList 祖先转换为通用集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8154088/

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