2

我正在 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 文档时出错”。谁能帮我把好吗?

4

1 回答 1

2

您收到此错误的原因是因为您使用的是 anArrayList并且 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);
}
于 2012-04-15T08:11:53.080 回答