使用XmlSerializer序列化ArrayList

我正在视觉工作室2010上进行一个小型的c#项目,并且正在尝试序列化一个具有People类对象的arraylist。 这是我的代码块

FileStream fs = new FileStream("fs.xml", FileMode.OpenOrCreate, FileAccess.Write); XmlSerializer xml = new XmlSerializer(typeof(ArrayList)); xml.Serialize(fs,this.array); 

我在最后一行有一条错误消息“生成XML文档时出错”。 有人可以帮我放好吗?

您收到此错误的原因是您使用的是ArrayList ,并且XmlSerializer不知道您的Person类。 一种可能性是在实例化序列化器时将序列化器指示为已知类型:

 var serializer = new XmlSerializer(typeof(ArrayList), new Type[] { typeof(Person) }); 

但更好的方法是使用通用List而不是ArrayList。 所以我们假设你有以下模型:

 public class Person { public string FirstName { get; set; } public string LastName { get; set; } } 

现在你可以有一个人员列表:

 List people = new List(); people.Add(new Person { FirstName = "John", LastName = "Smith" }); people.Add(new Person { FirstName = "John 2", LastName = "Smith 2" }); 

您可以序列化:

 using (var writer = XmlWriter.Create("fs.xml")) { var serializer = new XmlSerializer(typeof(List)); serializer.Serialize(writer, people); }