我有一个班级
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(或添加几个子类)来实现这一目标。
答案 0 :(得分:7)
根据您的评论,您似乎可以直接使用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.