百度空间 | 百度首页 
 
查看文章
 
使用Serializable轻松实现类实例的序列化
2009-08-06 10:16

在工作流平台设计时,需要使用到类实例的序列化,在C#中可以很容易的实现。


一、首先引用几个命名空间

using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

二、定义可序列化的类

[Serializable]
public class Student
{
  
    private string name;
    private string id;
    private string studentNum;
    private ArrayList scores;

   /// <summary>
   /// 姓名
   /// </summary>
   public string Name
   {
    get { return name; }
    set { name = value; }
   }

   /// <summary>
   /// 编号
   /// </summary>
   public string Id
   {
    get { return id; }
    set { id = value; }
   }

   /// <summary>
   /// 学号
   /// </summary>
   public string StudentNum
   {
    get { return studentNum; }
    set { studentNum = value; }
   }

   /// <summary>
   /// 成绩表
   /// </summary>
   public ArrayList Scores
   {
    get { return scores; }
    set { scores = value; }
   }

}

三、序列化到硬盘文件中

    Student student = new Student();
    student.Id = "002";
    student.Name = "senty";
    student.StudentNum = "090325";
    ArrayList scores = new ArrayList();
    scores.Add(90);
    scores.Add(67);
    scores.Add(89);
    scores.Add(73);
    student.Scores = scores;

    #region 序列化对象
    IFormatter formatter = new BinaryFormatter();
    Stream stream = new FileStream("f:/student.dat", FileMode.Create, FileAccess.Write, FileShare.None);
    formatter.Serialize(stream, student);
    stream.Close();
    #endregion

四、从文件中反序列类实例

    #region 反序列化
    IFormatter formatter = new BinaryFormatter();
    Stream stream = new FileStream("f:/student.dat", FileMode.Open, FileAccess.Read, FileShare.Read);
    Student student = formatter.Deserialize(stream) as Student;
    this.label1.Text = "反序列化完成:";
    this.label1.Text += "\r\n编号:" + student.Id;
    this.label1.Text += "\r\n姓名:" + student.Name;
    this.label1.Text += "\r\n学号:" + student.StudentNum;
    this.label1.Text += "\r\n成绩:" + student.Scores[0] + "," + student.Scores[1] + "," + student.Scores[2] + "," + student.Scores[3] + ",";
    #endregion

除了可以序列化类实例到文件中外,还可以保存到数据库中,至于如何保存Stream到数据库中,不在本文关注的范围,有兴趣可以自己百度一下。


类别:程序人生 | 添加到搜藏 | 浏览() | 评论 (0)
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu