如何基于合同或模式执行序列化?

时间:2009-07-09 15:11:12

标签: c# serialization

在我目前的项目中,我们使用二进制 xml 序列化来存储与winforms应用程序中的用户设置相关的数据。

目前,我们面临两个挑战:

  1. 序列化正在通过在其中编写业务逻辑的类的属性实现。
  2. 在不影响检索已存储数据的能力的情况下,很难对这些类进行重新分解。
  3. 我的主要目标是隔离数据合同,使其不会稀释或约束其他逻辑,以便我可以在需要时为现有数据提供迁移路径。

1 个答案:

答案 0 :(得分:1)

为什么不创建一个对等的可序列化对象,其角色只是支持序列化/反序列化?可序列化类可以在其上具有用于将实际对象推入/拉出序列化的方法,或者您可以使用单独的数据映射类(如果您有严重的版本控制问题,这可能会更好)。

这样你的主要应用程序对象是持久无知的,你不必做出妥协 - 比如公共getter和setter和属性 - 只是为了支持序列化。最终结果将是一个序列化层,它与应用层的更改分离。

在n层应用程序中,这些通常被称为数据传输对象(DTO),尽管这个术语在这里描述的情况下并不适用。