【发布时间】:2012-09-09 19:59:16
【问题描述】:
以前,为了保存一些应用程序的设置,我使用了:
- 容器的
TSettings = class(TPersistent) - 要在已发布属性中序列化的每个数据
- 对象列表为 TCollection 和 TCollectionItem 类型
-
TJvAppXMLFileStorage 组件用一行来保存所有内容:
JvAppXMLFileStorage.WritePersistent(...);
但是现在,我使用 TObjectList 作为 TSettings 类中的属性。
所以我放弃了 TCollection/TCollectionItem 以支持 Generics ...
当序列化它时,没有项目列表 ...我认为这是因为 TObjectList 不是来自 TPersistent。
如何使用 TJvAppXMLFileStorage 序列化我的 TObjectList ?
【问题讨论】:
-
我见过这个相关的问题,但它与 TCOllection 和 TObjectList 无关。 stackoverflow.com/questions/368913/…
-
听起来是个有趣的问题,但有点不清楚你在做什么/问什么。
-
您可以像在您链接的答案中一样使用它,只需遍历您的对象列表并使用
JvAppXMLFileStorage1.WritePersistent('', ObjectList.Items[i]); -
这部分JediVCL源自RxLib,为16位Delphi 1.0开发。尽管 JediVCL dropepd 支持 D1-D5,但他们仍然尝试与 D6 保持兼容。所以我不希望 JediVCL 中的泛型支持,在设计时代码中支持两次(至少在 IDE 本身支持 D-T 中的泛型之前)。我可能会建议您几种方法:自己在 JVCL 中实现此功能;尝试一些围绕 Spring4Delphi 的 ORM 框架(工作尚未完成);尝试 SuperObject 或其他现代 JSON 持久层;尝试其他 XML 解析器,例如 Jedi CodeLib、OmniXML、NativeXML,希望它们支持泛型。
标签: xml delphi serialization xml-serialization jedi