По моему опыту, порядок сериализации атрибутов такой же, как и порядок определения ваших общедоступных свойств. Однако если вы объединяете свойства с полями в одном классе, например,
[Serializable()]
public class MyClass
{
[XmlAttribute("ADoubleProp")]
public double ADoubleProp { get; set; }
[XmlAttribute("AnIntField")]
public int AnIntField = 42;
}
тогда поля получают первые атрибуты, а затем свойства. Код выше будет производить что-то вроде этого
<MyClass AnIntField="42" ADoubleProp="0" />