在C#中,如何序列化队列<>?(.Net 2.0)

Cra*_*des 8 .net c# generics serialization .net-2.0

在XmlSerializer构造函数行中,下面会导致InvalidOperationException,它还会抱怨没有为泛型类型实现默认访问者.

Queue<MyData> myDataQueue = new Queue<MyData>();

// Populate the queue here


XmlSerializer mySerializer =
  new XmlSerializer(myDataQueue.GetType());    

StreamWriter myWriter = new StreamWriter("myData.xml");
mySerializer.Serialize(myWriter, myDataQueue);
myWriter.Close();
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 14

从队列中序列化数据会更容易(也更合适的IMO)- 可能是在平面阵列中List<T>.自Queue<T>实现以来IEnumerable<T>,您应该能够使用:

List<T> list = new List<T>(queue);
Run Code Online (Sandbox Code Playgroud)

  • 如果你序列化一个包含 Queue&lt;T&gt; 的类,这并没有真正的帮助......除非你很乐意 XmlIgnore Queue 并确保你有一个 List&lt;T&gt; 字段保存数据的副本......或者在那里更好的方法? (2认同)