Вопрос по .net, c# – Сериализация ArrayList с помощью XmlSerializer

2

& # X131; Я работаю над небольшим проектом на C # в Visual Studio 2010 и & # x131; пытался сериализовать arraylist, который имеет мой объект класса людей. вот мой блок кода

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

и в последней строке у меня появляется сообщение об ошибке: «Произошла ошибка при создании документа XML». Может кто-нибудь помочь мне поставить, пожалуйста?

Похоже, твоя проблема связана сthis.array. Vlad the Impala
Какого типаthis.array и что в нем содержится? CodesInChaos
Не используйтеArrayList вообще используйтеList<People>. АнArrayList понадобится только в том случае, если вы застряли с использованием framework 1.x, а Visual Studio 2010 даже не может ориентироваться на framework 1.x ... Guffa

Ваш Ответ

1   ответ
2

по которой вы получаете эту ошибку, заключается в том, что вы используете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);
}
У меня такая же проблема. Я использую ArrayList, потому что я пишу DLL COM взаимодействия. Есть ли другое решение, которое использует ArrayList и не требуется передавать тип для конструктора Serializer? Ewerton
Огромное спасибо. Я довольно новый для C #: D хорошего дня. user1334254

Похожие вопросы