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

このエラーが発生する理由は、を使用していArrayListて、XmlSerializer がクラスを認識していないためですPerson。1 つの可能性は、シリアライザーをインスタンス化するときに既知の型としてシリアライザーに示すことです。

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 に答える