控制C#中的序列化顺序

时间:2010-07-30 16:35:36

标签: serialization xmlserializer

我正在使用XmlSerializer序列化对象并将其写入文件。我已经取得了相当大的成功,序列化器在嵌套元素方面做了我想做的事情,以及序列化为元素与属性的内容。不幸的是,我遇到了一个问题,我需要一个类的一个成员在另一个之前序列化。在其他地方,对我来说,无论先声明的是什么,都会先被序列化,但在这种情况下,我并没有取得如此大的成功。有没有办法手动控制事物序列化的顺序?

2 个答案:

答案 0 :(得分:28)

[XmlElementAttribute(Order = 1)] 
public int Field1 {...} 

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

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

注意 - 反序列化仅在XML文档中的属性具有相同顺序时才有效。否则它会默默地忽略无序属性。

答案 1 :(得分:2)

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