2009-03-04 12 views
6

現在、私はXmlSerializerを使用してオブジェクトを直列化および逆シリアル化しています。 xmlは未定義の順序で生成されますが、これは理解できるものですが、オブジェクトのバージョンを比較するときに迷惑になります。プロパティの順序は毎回異なるためです。たとえば、私は通常のdiffツールを使って違いを見ることはできません。XmlSerializerが定義された順序でxmlを出力する方法はありますか?

ReadXmlメソッドとWriteXmlメソッドを自分で記述することなく、毎回同じ順序でxmlを生成する簡単な方法はありますか?私はクラスで多くのプロパティを持っているし、新しいものを毎回追加するので、そのコードを記述して維持する必要はありません。

(C#の.NET 2.0)

+0

この「未定義の注文」を再現する例がありますか?私はそれが起こるのを見たことがないし、XMLシリアライザが結果を逆シリアル化する方法を見ていない。 –

答えて

9

のXMLELEMENT属性はorder propertyを有しています。これを最初に使用することができます。

diffファイルをXmlファイルで探す必要がある場合は、thisをご覧ください。

0

ps:XmlSerializerによって生成されたXMLが未定義の順序であるとは思いません。それは文書化されていないかもしれませんが、それは知られています。 Order属性がないと、XmlSerializerはすべてのpublicプロパティをシリアル化し、小道具名でアルファソートし、次にすべてのパブリックフィールドをアルファソートして名前で並べ替えます。

関連する問題