具有不同子类的XML序列化

本文关键字:XML 序列化 子类 | 更新日期: 2023-09-27 18:29:30

我有一个超级类和两个子类,我想将子类的对象序列化为列表并反序列化

我试图使用一个超级类列表,其中包含来自两个子类的对象,但最终出现了异常。

有什么办法吗?

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

具有不同子类的XML序列化

尝试将已知的类型传递给序列化程序,例如

serializer = new XmlSerializer(typeof(T), extraTypes);,其中extraTypes是必须序列化的类型数组。