XmlSerializer是否总是为具有相同值的相同任意类型的2个不同对象输出相同的字符串?

时间:2014-04-23 18:28:33

标签: c# xml string serialization

我通过将它们序列化为xml并使用.NET的XmlSerializer类比较字符串来比较两个对象(任何,但都是相同的类型)。假设两个对象中每个属性的所有值都相同,输出字符串是否保证相同?或者输出中的属性顺序是否总是相同(对于相同的对象类型,大约在同一时间序列化)?

换句话说,输出能否像这样结束:
"...<SomeProperty>1</SomeProperty><OtherProperty>abc</OtherProperty>..."

"...<OtherProperty>abc</OtherProperty><SomeProperty>1</SomeProperty>..."

我知道属性可用于准确指定序列化属性的顺序,但由于这种比较是在2个(相同)任意类型的对象上进行的,因此这些属性可能不会存在。< / p>

我假设输出格式对于任何给定类型都是一致的,即使不可预测或由显式排序属性控制,但我似乎无法在类文档中找到任何官方确认。

1 个答案:

答案 0 :(得分:2)

我在单元测试中使用DataContractSerializer中的这个技巧,并且还没有发现它不是同一个顺序的情况,虽然理论上它可以以不同的顺序发出,我从未见过它在实践中。