当前位置 : 主页 > 编程语言 > delphi >

在Delphi中将TObjectList祖先转换为泛型集合

来源:互联网 收集:自由互联 发布时间:2021-06-23
我上了课 TMyAwesomeList = class(TObjectList) 哪个 TAwesomeItem = class(TPersistent) 其中TAwesomeItem几乎是一个抽象类 TAwesomeItem1 = class(TAwesomeItem) TAwesomeItem2 = class(TAwesomeItem) TAwesomeItem3 = class(TAwesomeItem)
我上了课

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.
网友评论