使用 XmlSerializer 序列化 ArrayList

本文关键字:ArrayList 序列化 XmlSerializer 使用 | 更新日期: 2023-09-27 18:31:13

ı

正在 Visual Studio 2010 上处理一个小型 C# 项目,ı 试图序列化一个具有我的 People 类对象的数组列表。 这是我的代码块

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

我在最后一行有一条错误消息,即"生成 XML 文档时出错",任何人都可以帮我放吗?

使用 XmlSerializer 序列化 ArrayList

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

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

但更好的方法是使用通用List<T>而不是 ArrayList。因此,假设您有以下模型:

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

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

List<Person> people = new List<Person>();
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<Person>));
    serializer.Serialize(writer, people);
}