.net 广义XML序列化
我很抱歉问了一个以前可能被问过几百次的问题,但我似乎无法在档案中找到答案;可能是因为我的问题太基本了.net 广义XML序列化,.net,properties,xml-serialization,.net,Properties,Xml Serialization,我很抱歉问了一个以前可能被问过几百次的问题,但我似乎无法在档案中找到答案;可能是因为我的问题太基本了 我知道默认情况下XML序列化只涉及公共成员和属性。属性通常会屏蔽一个私有变量;特别是如果它们是只读的。序列化这些是好的;实例向世界公开的值就是进入XML的值。但是,如果相同数据的反序列化不能将值放回它所属的位置,那么这样做的意义何在?关于XML序列化通常如何用于具有屏蔽属性的类,我缺少什么吗?当然,唯一的答案不可能是显式地实现读/写XML——因为这比它值得付出的努力还要多 你是对的,但我认为你失
我知道默认情况下XML序列化只涉及公共成员和属性。属性通常会屏蔽一个私有变量;特别是如果它们是只读的。序列化这些是好的;实例向世界公开的值就是进入XML的值。但是,如果相同数据的反序列化不能将值放回它所属的位置,那么这样做的意义何在?关于XML序列化通常如何用于具有屏蔽属性的类,我缺少什么吗?当然,唯一的答案不可能是显式地实现读/写XML——因为这比它值得付出的努力还要多 你是对的,但我认为你失去了对所有含义的概述。;-)如果显式定义属性无法写入,则显然无法对其进行反序列化。至少不是以默认方式。您有不同的选项来解决此问题:
- 显然,您希望写入属性,因此应该考虑使其可写。有时不要太偏执是好的
- 大多数情况下,属性必须是只读的,这是在计算属性的情况下。但这些根本不需要序列化。所以用XmlIgnore标记它们,就完成了
- 您可以将覆盖传递给XmlSerializer。我不知道它们有多强大,但你可以看看文档。通常,它们用于修改无法修改的类型(即无法添加属性)的序列化行为
- 如果上述解决方案不起作用,您可能必须实现读/写XML
- 显然,您希望写入属性,因此应该考虑使其可写。有时不要太偏执是好的
- 大多数情况下,属性必须是只读的,这是在计算属性的情况下。但这些根本不需要序列化。所以用XmlIgnore标记它们,就完成了
- 您可以将覆盖传递给XmlSerializer。我不知道它们有多强大,但你可以看看文档。通常,它们用于修改无法修改的类型(即无法添加属性)的序列化行为
- 如果上述解决方案不起作用,您可能必须实现读/写XML
- 你是对的,但我认为你失去了对所有含义的概述。;-)如果显式定义属性无法写入,则显然无法对其进行反序列化。至少不是以默认方式。您有不同的选项来解决此问题: