【发布时间】:2011-11-16 15:24:56
【问题描述】:
我有课
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(或添加几个子类)以使其工作。
【问题讨论】:
-
列表是同质的,即。所有项目都是相同的具体类型?如果是这样,您可以只使用
type TMyAwesomeList1 = TObjectList<TMyAwesomeItem1>; TMyAwesomeList2 = TObjectList<TMyAwesomeItem2>;等。否则,您需要指定您希望for ... in循环如何工作。 -
原始 TAwesomeList 中没有太多内容,除了 4 个构造函数,它们使用正确的 TAwesomeItem 类型填充列表,并覆盖了我可以用泛型摆脱的 GetItem/SetItem 方法。是的,我认为它们都可以属于同一类型,最初我在编程时没有考虑到这一点,但从未那样使用它。
标签: delphi list generics delphi-2009