【问题标题】:Controlling order of serialization in C#在 C# 中控制序列化顺序
【发布时间】:2010-07-30 16:35:35
【问题描述】:

我正在使用 XmlSerializer 序列化对象并将其写入文件。我在序列化程序方面取得了相当大的成功,在嵌套元素和序列化为元素与属性方面做了我希望它做的事情。不幸的是,我遇到了一个问题,我需要一个类的成员在另一个之前序列化。在其他地方,首先声明的内容首先被序列化对我有用,但在这种情况下,我并没有那么成功。有没有办法手动控制事物的序列化顺序?

【问题讨论】:

    标签: serialization xmlserializer


    【解决方案1】:
    [XmlElementAttribute(Order = 1)] 
    public int Field1 {...} 
    
    [XmlElementAttribute(Order = 2)] 
    public int Field2 {...} 
    

    Catch:您必须为所有成员指定Order。

    小心 - 反序列化只有在 XML 文档中的属性顺序相同时才会起作用。否则它将默默地忽略乱序的属性。

    【讨论】:

    • 完美。我想我要么在 MSDN 上错过了它,要么没有足够的挖掘来找到它。谢谢。
    • 可能相关:有没有办法用XML属性控制顺序? XmlAttributeAttribute 没有这样的属性。
    • @Travis:根据我的经验,让属性按照声明的顺序序列化的问题更少(如果有的话)。
    • 如果您没有为所有指定顺序,它会在末尾或开头添加其余部分吗?允许负数来控制它会很好
    • 回答我自己的评论,不幸的是 XmlSerializer 要求您为所有元素添加顺序,并且在祖先类中也有这样的顺序。如果你不能控制祖先类,可以使用我在这里展示的 XmlAttributeOverride:dotnetfiddle.net/Bvbi0N
    【解决方案2】:

    XmlElementAttribute.Order,控制“元素被序列化或反序列化的显式顺序”。

    【讨论】:

      猜你喜欢
      • 2012-01-28
      • 1970-01-01
      • 2010-10-15
      • 2017-11-20
      • 2015-11-06
      • 1970-01-01
      • 2018-11-24
      • 2019-09-13
      • 1970-01-01
      相关资源
      最近更新 更多