2012-03-28 79 views
0

我有一個超類和兩個子類,我想序列化的子類的對象作爲一個列表和反序列化XML序列化

我試圖用一個超類列表,它有物體從兩個子類但最終只有一個例外。

有沒有辦法做到這一點?

Type1 t = new Type1() { text="123" ,opt1=true,opt2=true}; 
Type2 t1 = new Type2() { text="1234",isAnswer=false}; 
Question q1 = new Question() { text="12321"}; 
Question q2 = new Question() { text = "12321" }; 
List<Question> q = new List<Question>() { t1 }; 
FileStream fs = new FileStream("aa.xml", FileMode.OpenOrCreate, FileAccess.Write); 
XmlSerializer xs = new XmlSerializer(typeof(List<Question>)); 
//Exception is generated here InvalidOperationException 
//there was error genearating the XML document 
xs.Serialize(fs, q); 

fs.Close(); 
+4

你的代碼是什麼樣的?你有什麼嘗試?你有什麼異常?你的問題沒有給我們足夠的細節來重現你的場景。 – RQDQ 2012-03-28 17:30:21

+2

你得到了什麼異常? – 2012-03-28 17:33:08

+0

InvalidoperationException 生成XML文檔時發生錯誤。 Type1 t = new Type1(){text =「123」,opt1 = true,opt2 = true}; Type2 t1 = new Type2(){text =「1234」,isAnswer = false}; 問題q1 =新問題(){text =「12321」}; 問題q2 =新問題(){text =「12321」}; 列表 q =新列表(){q1,q2,t1}; FileStream fs = new FileStream(「aa.xml」,FileMode.OpenOrCreate,FileAccess.Write); XmlSerializer xs = new XmlSerializer(typeof(List )); – Guruparan 2012-03-28 17:36:47

回答

4

嘗試通過被稱爲到串行器的類型,如,

serializer = new XmlSerializer(typeof(T), extraTypes);其中extraTypes是,你必須被序列類型的陣列。