我已经成功地通过调用几行代码序列化了我的通用列表JvAppXMLFileStorage.WriteList
。
首先,这就是我序列化 list 的方式。下面详细介绍该WriteGenericsObjectListItem<TMyClass>
方法。
JvAppXMLFileStorage.WriteList('mylist',TObject(MyGenericList), MyGenericList.Count, WriteGenericsObjectListItem<TMyClass>);
然后,我只需要定义如何序列化通用列表的每个项目。为此,我创建了一个通用方法:
procedure TMySerializer.WriteGenericsObjectListItem<T>(Sender: TJvCustomAppStorage;
const Path: string; const List: TObject; const Index: Integer; const ItemName: string);
begin
if(List is TObjectList<T>) then
if Assigned(TObjectList<T>(List)[Index]) then
Sender.WritePersistent(Sender.ConcatPaths([Path, Sender.ItemNameIndexPath (ItemName, Index)]), TPersistent(TObjectList<T>(List)[Index]));
end;
而已!
我没有修改 JCL/JVCL 代码,只是将这些添加到我的程序中。
我想我会向 JCL/JVCL 团队提交一个补丁,以添加与所有泛型容器的兼容性。
我希望这可以帮助你!