属性の順序に関心がある場合は、IXmlSerializable
インターフェイスを使用して、クラスのシリアル化/逆シリアル化プロセスを制御できます。属性の順序は、コード行の順序によって決まります。
public void WriteXml(XmlWriter writer)
{
//First example xml element
writer.WriteStartElement("Item1");
writer.WriteAttributeString("Name", Name);
writer.WriteAttributeString("Price", Price);
writer.WriteAttributeString("Id", Id);
writer.WriteEndElement();
//Second example xml element
writer.WriteStartElement("Item2");
writer.WriteAttributeString("Price", Price);
writer.WriteAttributeString("Id", Id);
writer.WriteAttributeString("Name", Name);
writer.WriteEndElement();
}
出力:
<Item1 Name="x" Price="y" Id="z">
<Item2 Price="y" Id="z" Name="x">
ご覧のとおり、コード行を切り替えると、順序が変更されます。
ただし、このインターフェイスを実装するとデフォルトのプロセスが上書きされ、シリアライゼーション/デシリアライゼーション プロセス全体を作成できるようになることに注意してください。
ノーシャスよろしく