繁体   English   中英

如何使用 System.Xml 使 object 不可变但可序列化。 C# 中的序列化?

[英]How to make object immutable yet serializable with System.Xml.Serialization in C#?

在我的应用程序中,我有很多要序列化的 XML,所以我创建了很多模型来序列化。 我使用 System.Xml.Serialization,所以它需要无参数的构造函数和对属性的公共访问来写入反序列化的数据。

现在,我想实现备忘录模式以提供撤消和重做功能,在这种情况下,能够拥有不可变对象会很好,因此不会有任何与我更改某些属性而不是创建新实例相关的错误.

问题是我没有看到任何可以同时为我提供两种解决方案的解决方案——能够反序列化对象,然后为 Memento 模式提供不变性(嗯,有冰棒不变性,但我不确定)。 创建单独的对象(记录左右),在程序完成反序列化后将我的反序列化对象转换为这些对象似乎是一种解决方案,但它有一个缺陷,即引入了许多新类型,这些新类型会消耗时间并增加以后的维护成本。

你们有其他我可以使用的想法或模式吗?

本文的帮助下,我能够创建一个解决方案。 唯一需要注意的是它需要DataContractSerializer而不是System.Xml.Serialization 这是我为简化DataContractSerializer的使用而创建的包装器class的 dotnetfiddle。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM