C#XML序列化保留列表<t>订单</t>

时间:2013-12-12 01:23:19

标签: c# xml serialization

目前我正在使用List创建一种历史记录日志。我通过简单地使用XML序列化程序对其进行序列化来保存此列表,但每当我序列化列表然后反序列化它时,顺序与我第一次创建列表时的顺序不同。

例如,当我第一次创建列表时,它可能按此顺序

  1. A
  2. C
  3. 然而,当我序列化/反序列化时,它可能变成类似

    的东西
    1. C
    2. A
    3. 串行化时有没有办法或强制序列化程序保留列表的顺序? (我发现它实际上以错误的顺序保存它开始)

      当前代码:

      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 Class

      [Serializable]
      public class StoredData
      {
          public String storedClip;
          public DateTime storedTime;
      }
      

1 个答案:

答案 0 :(得分:-1)

这是一种在序列化XML时保留顺序的方法

[Serializable]
public class StoredData
{
    [Datamember(Name = "Clip", Order = 1)]
    public String storedClip;
    [Datamember(Name = "Time", Order = 2)]
    public DateTime storedTime;
}