2015-07-19 2 views
1

Я пытаюсь сделать приложение, которое позволяет людям регистрировать свою информацию, чтобы работодатели могли читать их и связываться с ними.Сериализация нескольких объектов

Проблема заключается в том, что всякий раз, когда я пытаюсь десериализовать информацию, я либо получаю только один объект, либо программу выдает исключение.

private void button1_Click(object sender, EventArgs e) 
{ 
    FileStream sw = new FileStream("Applicants.xml",FileMode.Append,FileAccess.Write,FileShare.None); 
    XmlSerializer xs = new XmlSerializer(typeof(Class1), new XmlRootAttribute("Applist")); 
    Class1 cc = new Class1(); 
    cc.name = textBox1.Text; 
    cc.age = textBox2.Text; 
    cc.degree = textBox3.Text; 
    cc.salary = textBox4.Text; 
    cc.no = textBox5.Text; 
    c.Add(cc); 

    xs.Serialize(sw,cc); 


    this.Hide(); 
} 

Что делать, чтобы сериализовать и десериализовать все созданные объекты? class1:

public class Class1 
{ 
    public String name; 
    public String age; 
    public String degree; 
    public String no; 
    public String salary; 

} 

код десериализации:

private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e) 
{ 
     List<Class1> c2 = new List<Class1>(); 
     XmlSerializer xml = new XmlSerializer(typeof(List<Class1>)); 
     FileStream fs = new FileStream("Applicants.xml",FileMode.Open); 
     c2 = (List<Class1>)xml.Deserialize(fs); 
     label3.Text = ; //don't know what t write here 
} 
+0

Что такое c? Список ? – Jagannath

+0

c - это список классов1, который содержит поля (имя, возраст, степень, зарплата) –

+2

Кажется, что вы сериализуете cc, а не c. Таким образом, вы получите только cc, а не список c – Baptiste

ответ

2

Если вы хотите сериализовать список, вы должны создать Serializer для типа List<Class1>.

XmlSerializer xs = new XmlSerializer(typeof(List<Class1>), new XmlRootAttribute("Applist")); 

А затем сериализуем фактический список вместо cc.

xs.Serialize(sw,c); 
+0

, который работал (Y), но как насчет десериализации, извините, я все еще новичок: 'D –

+0

@MayarAkram: Я не уверен, что вы хотите показать в label3 Text. Вы уже удалили его и получили список экземпляров Class1. Вы можете делать все, что хотите от списка. – CharithJ

+0

@MayarAkram: Пожалуйста, не забудьте выбрать ответ на свой вопрос, если есть ответ, который решил ваш вопрос. – CharithJ

Смежные вопросы