2012-03-28 97 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是,你必须被序列类型的阵列。