目前我的所有对象都包含save和load方法。这些方法基本上是创建一个xml文档。内部对象使用各自的保存方法(有时是其接口)进行序列化。现在我想要在某些对象中进行不同的序列化。 所以基本上我希望能够从一个版本的序列化转到另一个版本。
一种方法是将序列化逻辑从类本身分离到一个单独的类(类似于microsoft的xmlserializer),从而扩展功能,但是当我不知道对象的类型因为它是基类时我遇到了问题或界面。
还有其他更好的方法(除了使用XmlSerializer或DataContractSerializer)吗?
谢谢, 帕维尔
答案 0 :(得分:1)
如果我理解正确(评论),你有一个每个实现提供的现有Save(...)方法 - 并且不想为不同的布局添加Save2(...)。
在这种情况下,我只需添加任何定义新格式作为参数。如果它可能涉及多个事物(可能是版本号和格式),我会编写一个类SerializationContext
这样的东西作为属性,并修改现有的保存来采取这个,即
Save(..., SerializationContext ctx)
任何现有代码都可能完全忽略ctx
,但是根据需要,您的类可以选择检查ctx.Version
或ctx.Format
等,以使其行为正常。如果需要,您还可以在以后向SerializationContext
添加其他内容。