我需要了解如何使用通用 Delphi 2009 TObjectList
。我的非TObjectList
尝试看起来像
TSomeClass = class(TObject)
private
FList1: Array of TList1;
FList2: Array of TList2;
public
procedure FillArray(var List: Array of TList1; Source: TSource); Overload;
procedure FillArray(var List: Array of TList2; Source: TSource); Overload;
end;
在这里,TList1
并TList2
继承了相同的构造函数constructor TParent.Create(Key: string; Value: string);
。但是,由于不同的专业化(例如不同的私有字段),它们不会属于同一类型。所以我必须写两个几乎相同的填充方法:
procedure TSomeClass.FillArray(var List: Array of TList1; Source: TSource);
begin
for i := 0 to Source.List1.Count - 1 do begin
SetLength(List, Length(List) + 1);
List[i] := TList1.Create(Source.List1[i].Key, Source.List1[i].Value);
end;
end;
withFillArray(List: Array of TList2; Source: TSource);
是相同的,除了整个替换为TList1
with TList2
。据我了解,这可以通过使用TObjectList
和单一填充方法巧妙地规避;但是,我不知道该怎么做。有人对此有一些好的建议吗?谢谢!