博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

序列化与反序列化问题

Posted on 2011-10-30 14:39  凌风孤鸿  阅读(142)  评论(0编辑  收藏  举报

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
namespace BinarySerializableExample
{
    [Serializable]//序列化
        //序列化的两个功能是:1:将对象的状态存储在媒体中,便于创建对象的精确的副本
        //2.通过值将对象从一个应用程序传送到另一个应用程序
    public class AuthUserEntry
    {
        private int accountId;
        private string accountName;
        public int AccountId
        {
            get
            {
                return accountId;
            }
            set
            {
                accountId = value;
            }
        }
        public string AccountName
        {
            get
            {
                return accountName;
            }
            set
            {
                accountName = value;
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            AuthUserEntry ate = new AuthUserEntry();
            ate.AccountId = 21;
            ate.AccountName = "LiangShuai";
            IFormatter formatter = new BinaryFormatter();//序列化到一个二进制的文件.bin中
            Stream stream = new FileStream("UserInfo.bin",FileMode.Create,FileAccess.Write,FileShare.None);
            formatter.Serialize(stream,ate);
            stream.Close();
            //反序列化时要首先创建用于读取的流和格式化接口,然后用格式化接口反序列化该对象
            stream = new FileStream("UserInfo.bin",FileMode.Open,FileAccess.Read,FileShare.Read);
            AuthUserEntry auth = (AuthUserEntry)formatter.Deserialize(stream);
            stream.Close();
            Console.WriteLine("ID is{0}",auth.AccountId);
            Console.WriteLine("Name is {0}",auth.AccountName);
            Console.ReadKey();

        }
    }
}