Сериализация XML с разными подклассами - PullRequest
0 голосов
/ 28 марта 2012

У меня есть суперкласс и два подкласса, и я хочу сериализовать объекты подклассов как список и десериализовать его

Я попытался использовать список суперклассов, в котором были объекты из обоих подклассов, но в результате возникло исключение.

Есть ли способ сделать это?

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

1 Ответ

4 голосов
/ 28 марта 2012

Попробуйте передать типы, которые будут известны сериализатору, например,

serializer = new XmlSerializer(typeof(T), extraTypes);, где extraTypes - это массив типов, которые необходимо сериализовать.

...