Andere Alternative, die mir gerade noch einfällt, wäre sowas:
Delphi-Quellcode:
type
TMySerializer = class
procedure SerializeList<T: class>(List: TList<T>);
procedure DeserializeList<T: class, constructor>(List: TList<T>);
procedure TMySerializer.DeserializeList<T>(List: TList<T>);
var
newItem: T;
begin
...
newItem := T.Create;
Self.DeserializeObject(newItem);
List.Add(newItem);
...
end;