Вопрос по .net, c# – Сериализация ArrayList с помощью XmlSerializer
& # 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
.
Какого типа
this.array
и что в нем содержится?
Не используйте
ArrayList
вообще используйтеList<People>
. АнArrayList
понадобится только в том случае, если вы застряли с использованием framework 1.x, а Visual Studio 2010 даже не может ориентироваться на framework 1.x ...
1
ответ
по которой вы получаете эту ошибку, заключается в том, что вы используете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?
Огромное спасибо. Я довольно новый для C #: D хорошего дня.
Похожие вопросы
Похоже, твоя проблема связана с<code>this.array</code>.
Какого типа<code>this.array</code> и что в нем содержится?
Не используйте<code>ArrayList</code> вообще используйте<code>List<People></code>. Ан<code>ArrayList</code> понадобится только в том случае, если вы застряли с использованием framework 1.x, а Visual Studio 2010 даже не может ориентироваться на framework 1.x ...