在.NET中Xml序列化失败的场景

时间:2009-04-08 09:09:54

标签: c# .net xml-serialization

我想知道在.NET中xml序列化可能失败的最常见情况。

6 个答案:

答案 0 :(得分:4)

我在这里主要考虑XmlSerializer

  • 仅限于树状数据;它无法处理完整的对象图
  • 仅限于公共成员,公共课程
  • 它对object成员
  • 的影响不大
  • 它在泛型方面存在一些弱点
  • 与许多序列化程序一样,它不会触及集合上的实例属性(首先是不好的做法)
  • xml并不总是大数据的好选择(尤其是性能)
  • 需要公共无参数构造函数

DataContractSerializer解决了其中一些问题,但有其自身的局限性:

  • 它无法处理属性
  • 中的值
  • 需要.NET 3.0(因此在2.0中使用不多)

答案 1 :(得分:3)

无法轻松序列化通用集合。

请参阅另一个问题:C# XML Serialization Gotchas

答案 2 :(得分:1)

根据序列化程序,循环引用可能不起作用

答案 3 :(得分:1)

使用shadows关键字也打破了序列化和反序列化,因为阴影导致该属性的新实现存在,使其与正确的重建不兼容。如果要重新键入特定的子类,则仅使用重载。

答案 4 :(得分:0)

TimeSpan个对象不可序列化。 IDictionary - 实现类型也不可序列化(尽管可以通过一些手动按摩来序列化)。

答案 5 :(得分:0)

AFAIK,自.NET 2.0以来,标记为[已废弃]的类未被XmlSerializer序列化