代码之家  ›  专栏  ›  技术社区  ›  Tom W

通用XML序列化

  •  0
  • Tom W  · 技术社区  · 14 年前

    我很抱歉问了一个可能以前被问过几百次的问题,但我似乎无法在档案中找到答案;可能是因为我的问题太基本了。

    我知道,默认情况下,XML序列化只涉及公共成员和属性。属性通常会屏蔽一个私有变量,特别是当它们是只读的时。将它们序列化是很好的;实例向世界公开的值就是进入XML的值。但是,如果同一数据的反序列化不能将值放回它所属的位置,那么做的目的是什么?关于XML序列化通常如何用于具有屏蔽属性的类,我是否遗漏了一些内容?当然,唯一的答案不可能是显式实现读/写XML——因为这比它的价值更大!

    1 回复  |  直到 14 年前
        1
  •  3
  •   Achim    14 年前

    你说得对,但我认为你已经失去了对所有影响的概述。;-)如果您显式地定义了一个属性不能被写入,那么很明显您不能对它进行反序列化。至少不是默认的方式。你有不同的选择来解决这个问题:

    • 显然,您希望写入该属性,因此应该考虑使其可写。有时,最好不要太多疑。

    • 大多数情况下,一个属性必须是只读的,这是在计算属性的情况下。但这些根本不需要序列化。所以用xmlignore标记它们,就完成了。

    • 可以将重写传递给XmlSerializer。我不知道它们有多强大,但您可以看一下文档。通常,它们用于修改不能修改的类型(即不能添加属性)的序列化行为。

    • 如果上述解决方案不起作用,您可能需要实现读/写XML。