使用XmlSerializer序列化对象时,如果这个对象是个集合类,或者当有个要序列化的属性是个集合类时,总是引起错误。
用Arraylist对象作集合容器时,如果存放的是object对象,一切OK,如果是其他对象,必然引起错误。
派生CollectionBase子类时,在存放任何元素的情况下都会出错。
没试其他集合对象,但估计也不会好使。
使用 XmLSerializer 类,可将下列项序列化:
1.公共类的公共读/写属性和字段
2.实现 ICollection 或 IEnumerable 的类。 //我想你对这个比较感兴趣
3.XmlElement 对象。
4.XmlNode 对象。
5.DataSet 对象
>>>>>用Arraylist对象作集合容器时,如果存放的是object对象,一切OK,如果是其他对象,必然引起错误?
are you sure? try
using System;
using System.Collections;
using System.IO;
using System.Xml.Serialization;
public class TestClass
{
public string mtc;
}
public class Group
{
[
XmlElement(typeof(string)),
XmlElement(typeof(int)),
XmlElement(typeof(TestClass))
]
public ArrayList ExtraInfo;
}
public class Run
{
public static void Main()
{
Run test = new Run();
test.SerializeObject("ElementTypes.xml");
}
public void SerializeObject(string filename)
{
TextWriter writer = new StreamWriter(filename);
XmlSerializer s = new XmlSerializer(typeof(Group));
Group myGroup = new Group();
myGroup.ExtraInfo = new ArrayList();
myGroup.ExtraInfo.Add("hello");
myGroup.ExtraInfo.Add(100);
TestClass tc = new TestClass();
tc.mtc = "ABCDEFGH";
myGroup.ExtraInfo.Add(tc);
s.Serialize(writer,myGroup);
writer.Close();
}
}