代码改变世界

写个序列化与反序列化例子吧

2008-10-28 14:42  Rainbow  阅读(563)  评论(0)    收藏  举报

定义个实体类:

[Serializable]
    class User
    {
        //私有字段
        string _Name;
        int _Age;
        bool _Sex;

        //公开属性
        public string Name
        {
            get { return _Name; }
            set {_Name=value;}
        }
        public int Age
        {
            get { return _Age; }
            set { _Age = value; }
        }
        public bool Sex
        {
            get { return _Sex; }
            set { _Sex = value; }
        }

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="Name"></param>
        /// <param name="Age"></param>
        /// <param name="Sex">男:True 女:False</param>
        public User(string Name, int Age, bool Sex)
        {
            this._Name = Name;
            this._Age = Age;
            this._Sex = Sex;
        }

    }

 

  /// <summary>
        /// 序列化类为一个二进制数组,方便存入数据库
        /// </summary>
        /// <param name="pObj"></param>
        /// <returns></returns>
        public static byte[] SerializeObject(object pObj)
        {
            if (pObj == null)
                return null;
            System.IO.MemoryStream _memory = new System.IO.MemoryStream();
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(_memory, pObj);
            _memory.Position = 0;
            byte[] read = new byte[_memory.Length];
            _memory.Read(read, 0, read.Length);
            _memory.Close();
            return read;
        }

 /// <summary>
        /// 从二进制数组反序列化
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static User DeBinSerialze(byte[] model)
        {
            IFormatter formatter = new BinaryFormatter();
            Stream stream = new MemoryStream(model);
            User obj = (User)formatter.Deserialize(stream);
            stream.Close();
            return obj;
        }

 

 

 /// <summary>
        /// 序列化类到文件
        /// </summary>
        /// <param name="obj"></param>
        public static void BinSerialze(object obj)
        {
            IFormatter formatter = new BinaryFormatter();
            Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
            formatter.Serialize(stream, obj);
            stream.Close();

        }

 

 

  /// <summary>
        /// 从文件反序列化类
        /// </summary>
        /// <returns></returns>
        public static User DeBinSerialze()
        {
            IFormatter formatter = new BinaryFormatter();
            Stream stream = new FileStream("MyFile.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
            User obj = (User)formatter.Deserialize(stream);
            stream.Close();
            return obj;
        }