2008-11-21 73 views
8

在XmlSerializer構造函數行中,下面的內容會導致一個InvalidOperationException,它也會抱怨沒有爲泛型類型實現默認的accesor。在C#中,如何序列化隊列<>? (.Net 2.0)

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(); 

回答

14

這將是容易(和更合適的IMO)從隊列串行化數據 - 也許在一個平面陣列或List<T>。由於Queue<T>實現IEnumerable<T>,你應該能夠使用:

List<T> list = new List<T>(queue); 
+1

你也可以使用queue.ToList() – chakrit 2008-11-21 21:16:15

0

,如果你想使用內置的序列化,你需要通過它的遊戲規則,這意味着默認的構造函數,公共的get/set屬性成員你想序列化(並推測反序列化) 你想要序列化的數據類型(MyData)

1

並非框架的所有部分都是爲XML序列化而設計的。你會發現系列化部門也缺乏字典。

隊列實現起來相當簡單。你可以很容易地創建自己的實現IList,使其可序列化。