Serialization C语言中串行化的控制顺序#

Serialization C语言中串行化的控制顺序#,serialization,xmlserializer,Serialization,Xmlserializer,我正在使用XmlSerializer序列化对象并将其写入文件。在嵌套元素以及序列化为元素与属性方面,我已经在序列化程序中取得了相当大的成功。不幸的是,我遇到了一个问题,需要先序列化一个类的一个成员,然后再序列化另一个成员。在其他地方,对我来说,首先声明的内容首先被序列化是可行的,但在这个例子中,我并没有在这方面取得太多成功。有没有办法手动控制事物序列化的顺序?,它控制“元素序列化或反序列化的显式顺序” 捕获:您必须为所有成员指定顺序 小心-只有当XML文档中的属性顺序相同时,反序列化才会起作用。

我正在使用XmlSerializer序列化对象并将其写入文件。在嵌套元素以及序列化为元素与属性方面,我已经在序列化程序中取得了相当大的成功。不幸的是,我遇到了一个问题,需要先序列化一个类的一个成员,然后再序列化另一个成员。在其他地方,对我来说,首先声明的内容首先被序列化是可行的,但在这个例子中,我并没有在这方面取得太多成功。有没有办法手动控制事物序列化的顺序?

,它控制“元素序列化或反序列化的显式顺序”

捕获:您必须为所有成员指定
顺序


小心-只有当XML文档中的属性顺序相同时,反序列化才会起作用。否则它将自动忽略无序属性。

Perfect。我想我要么错过了MSDN上的那个,要么就是挖得不够找。谢谢。可能是相关的:有没有办法用XML属性控制顺序
XmlAttributeAttribute
没有这样的属性。@特拉维斯:根据我的经验,让属性按声明的顺序序列化的问题较少(如果有)。如果不为所有属性指定顺序,它是在末尾还是在开头添加其余属性?允许负数控制这一点会很好。为了回答我自己的评论,不幸的是XmlSerializer要求您为所有元素添加顺序,并且在祖先类中也有这样的顺序。如果您不能控制祖先类,可以使用XmlAttributeOverride,如我在这里所示:
[XmlElementAttribute(Order = 1)] 
public int Field1 {...} 

[XmlElementAttribute(Order = 2)] 
public int Field2 {...}