Мне нужно понять, как использовать универсальный 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;
с FillArray(List: Array of TList2; Source: TSource);
идентичными, за исключением замены TList1
на TList2
повсюду. Насколько я понимаю, это можно аккуратно обойти, используя TObjectList
и единственный метод заполнения; тем не менее, я понятия не имею, как это сделать. У кого-нибудь есть хорошие указатели на это? Спасибо!