使用.NET进行序列化和反序列化

时间:2010-10-01 09:34:31

标签: .net serialization

我目前正与一些朋友讨论如何设计易于序列化和可反序列化的类。我们目前正在使用一种“本土化”尝试,涉及许多怪异的界面,自定义属性和加载反射,现在已经超出了它的设计范围。所以我们正在寻找替代方案。优选成熟的框架已经具有生产质量。但到目前为止,我们找不到任何符合我们需求的东西。

我们目前的系统提供以下功能:

  • 它使用XML,这不是直接至关重要的。 :内容应该是人类可读的,并且在VCS的上下文中使用时会产生“漂亮”的差异。所以我猜XML是合理的。
  • 它适用于Silverlight,XNA和“普通”.NET Framework。我们目前只使用“普通”.NET框架,但不想削减Silverlight。 XNA是奖金,但不是太严格要求。
  • 它支持“部分”反序列化,它基本上只加载我们的资源属性的子集。这不是严格要求,但可以大大加快加载时间,因为资源可以“按需”加载。

我们知道,特别是最后一项要求有点不合时宜,但也许我们很幸运,有人知道一个体面的框架?我们也希望听到不完全符合我们要求的框架以及.NET标准库以外的框架,因为我们真的找不到很多。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用System.XmlXmlSerializer对其进行序列化,然后使用System.Xml.LinqXDocument在.NET 3.5中进行部分反序列化。也许你需要Silverlight和XNA中的其他方法。

答案 1 :(得分:1)

您是否尝试使用XmlSerializerBinaryFormatter(及相关)类?

大多数事情可以使用这两者中的任何一个轻松地序列化和反序列化,并且在许多情况下即使有某些事情阻止使用这些类的序列化(例如循环引用),使用{{3}也很容易解决这个问题。 },或者在极端情况下,通过实施serialisation attributesIXmlSerializable

<。> .Net序列化机制非常通用 - 在排除标准.Net序列化技术之前,您的对象需要非常特殊。