static void Main(string[] args) { Console.Title = "序列化存取类实例"; Program p = new Program(); Student student = new Student("张三", 20, "男", 3); student.Interests.Add(new Interest("篮球")); student.Interests.Add(new Interest("游泳")); Console.WriteLine("二进制序列化学生类:"); Console.Write("姓名:{0} 年龄:{1} 性别 {2} 年级 {3} 爱好有:", student.Name, student.Age, student.Sex, student.Grade); foreach (var item in student.Interests) Console.Write(item.Name + " "); p.BinarySerializeStudent(student); Console.WriteLine("\n二进制反序列化学生类:"); student = p.BinaryDeserializeStudent(); Console.Write("姓名:{0} 年龄:{1} 性别 {2} 年级 {3} 爱好有:", student.Name, student.Age, student.Sex, student.Grade); foreach (var item in student.Interests) Console.Write(item.Name + " "); Console.WriteLine("\nXml序列化学生类:"); Console.Write("姓名:{0} 年龄:{1} 性别 {2} 年级 {3} 爱好有:", student.Name, student.Age, student.Sex, student.Grade); foreach (var item in student.Interests) Console.Write(item.Name + " "); p.XmlSerializeStudent(student); Console.WriteLine("\nXml反序列化学生类:"); student = p.XmlDeserializeStudent(); Console.Write("姓名:{0} 年龄:{1} 性别 {2} 年级 {3} 爱好有:", student.Name, student.Age, student.Sex, student.Grade); foreach (var item in student.Interests) Console.Write(item.Name + " "); Console.Read(); }
/* 1. 需要序列化为xml元素的属性必须为读/写属性; 2. 注意为类成员设定缺省值,尽管这并不是必须的。 使用 XmLSerializer 类,可将下列项序列化。 公共类的公共读/写属性和字段 实现 ICollection 或 IEnumerable 的类。(注意只有集合会被序列化,而公共属性却不会。) XmlElement 对象。 XmlNode 对象。 DataSet 对象。 */ public void XmlSerializeStudent(Student student) { //创建一个文件用来存储序列化后的学生类 Stream studentStream = new FileStream("student.xml", FileMode.Create); XmlSerializer formatter = new XmlSerializer(typeof(Student));//Xml格式化器 formatter.Serialize(studentStream, student); //将学生类实例序列化后存入文件中 studentStream.Close(); }
public void BinarySerializeStudent(Student student) { //创建一个文件用来存储序列化后的学生类 FileStream studentStream = new FileStream("student.dat", FileMode.Create); BinaryFormatter formatter = new BinaryFormatter(); //二进制格式化器 formatter.Serialize(studentStream, student); //将学生类实例序列化后存入文件中 studentStream.Close(); }