2010-08-02 120 views
1

我会遇到这种情况,即将对象列表作为属性存储在类中的正确方法,以及如何正确地将它们序列化为XML。存储/序列化对象列表

例如,我们有一个TabGroup类,它将包含零个或多个Tabs。

是更好的具有标签财产清单或标签引用的列表?只要标签由独特的slu identified识别。

List<Tab> 

List<string> 

最终它归结为

  1. 序列化只是整个TabGroup图(它将包含所有的标签和它们的内容)
  2. 序列化Tabgroups和标签indenpendently和维修器材它们分开,通过序列化的Tabgroup图中的slug列表引用。

的1最显着的优点:

  • Tabgroup在其整体坚持一个序列化的文件,保持数据存储结构简单。

的1最值得注意CON:

  • 一个更新到包含选项卡中的一种制成每次Tabgroup必须更新(reserialized)太。

的2最显着的优点:

  • 更新标签不需要Tabgroup的reserialization(至少在不添加任何物质或删除),因为引用保持不变;所以只有更新后的Tab必须重新序列化。

的2最引人注目CON(这就是为什么我写这个的主要原因)

  • 个人标签文件可以在文件存储被删除,但引用的名单仍然是相同的,所以错误/查看/呈现Tab组时发生异常;复杂的逻辑将不得不实施,以呈现出类似“Tab以不受支持的方式从数据存储区中移除,并将其从Tabgroup中移除?”

你有什么建议来解决这个问题?我会接受涵盖广泛含义的答案。请注意,我们在这里只谈论XML持久性,显然在SQL中,我们没有多少实验空间,因为Tabgroups和Tabs通常会在单独的表中(它们之间具有一对多关系)。

回答

1

除非你有一些非常令人信服的理由,数据存储复杂的是一个好主意,你应该去通常与保持简单。其次,在阅读整篇文章两次后,我不太明白你的问题是什么。

我不太清楚你的问题是什么,但如果你问你的设计是否应返回List<Tab>List<string>其中每个字符串代表一个链接到一个选项卡,然后我会主张List<Tab>。如果加载是一个问题,您可以延迟加载除ID之外的整个结构或用于链接的任何内容。通常,它只是让事情变得更容易,直接从对象中获得所需内容,而不必单独获取链接列表并加载所有链接。

没有关于实际问题的更多信息,我怀疑任何人都可以帮助你,而不是基于假定的情况给予一些长期的优点/缺点。

+0

你对这个问题的理解已经足够好了,我同意列表是最合理的选择。 – mare 2010-08-02 19:54:20