【发布时间】:2013-12-12 01:23:19
【问题描述】:
目前我正在使用列表制作一种历史记录。我通过简单地使用 XML 序列化程序对其进行序列化来保存此列表,但是每当我序列化列表然后反序列化它时,顺序与我第一次创建列表时的顺序不同。
比如我第一次创建列表的时候,可能是这个顺序
- 一个
- B
- C
然而,当我序列化/反序列化时,它可能会变成类似
- B
- C
- 一个
有没有办法或强制序列化程序在序列化时保留列表的顺序? (我发现它实际上以错误的顺序保存它)
当前代码:
public static List<StoredData> clipboardData = new List<StoredData>();
private void SaveClipboard()
{
XmlSerializer serializer = new XmlSerializer(typeof(List<StoredData>));
using (StreamWriter stream = new StreamWriter(historyFile))
{
serializer.Serialize(stream, clipboardData);
}
Console.WriteLine("Saved");
}
StoredData 类
[Serializable]
public class StoredData
{
public String storedClip;
public DateTime storedTime;
}
【问题讨论】:
-
您使用的是哪个序列化程序?
-
@Baldrick XML 序列化程序
-
我几乎可以肯定 XmlSerializer 保留了列表的顺序。您可以发布这种行为的列表的代码和声明吗?
-
@Baldrick 我也有同样的想法,但无论出于何种原因,它似乎都没有这样做。用代码更新帖子,看看是否有帮助。
-
@user1363526:IIRC,它仍然不应该倒车。我不知道你要不要删除这个问题,但是从我现在坐的位置,你应该不必须打电话给
Reverse。
标签: c# xml serialization