国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

序列化、反序列化的使用

2019-11-17 03:14:25
字體:
來源:轉載
供稿:網友
序列化、反序列化的使用

調用:

using System;namespace ConsoleApp_Serializable{    class PRogram    {        static void Main(string[] args)        {            Person mike = new Person() { Age = 21, Name = "Mike" };            mike.NameChanged += mike_NameChanged;            BinarySerializer.SerializeToFile(mike, @"c:/", "person.txt");            Person p = BinarySerializer.DeserializeFromFile<Person>(@"c:/person.txt");            p.Name = "rose";            Console.WriteLine(p.Name);            Console.WriteLine(p.Age.ToString());            Console.ReadKey();        }        static void mike_NameChanged(object sender, EventArgs e)        {            Console.WriteLine("Name Changed !");        }    }    [Serializable]    class Person    {        private string name;        public int Age { get; set; }        public string Name        {            get { return name; }            set            {                if (NameChanged != null)                {                    NameChanged(this, null);                }                name = value;            }        }        //事件往往是不需要序列化的,反序列化的環境和序列化的環境往往不一致,這就失去了將事件序列化的意義。        [field: NonSerialized]        public event EventHandler NameChanged;    }}
工具類:
using System.IO;using System.Runtime.Serialization.Formatters.Binary;namespace ConsoleApp_Serializable{    public class BinarySerializer    {        /// <summary>        /// 將類型序列化為字符串        /// </summary>        public static string Serialize<T>(T t)        {            using (MemoryStream stream = new MemoryStream())            {                BinaryFormatter formatter = new BinaryFormatter();                formatter.Serialize(stream, t);                return System.Text.Encoding.UTF8.GetString(stream.ToArray());            }        }        /// <summary>        /// 將類型序列化為文件        /// </summary>        public static void SerializeToFile<T>(T t, string path, string fullname)        {            if (!Directory.Exists(path))            {                Directory.CreateDirectory(path);            }            string fullPath = string.Format(@"{0}/{1}", path, fullname);            using (FileStream stream = new FileStream(fullPath, FileMode.OpenOrCreate))            {                BinaryFormatter formatter = new BinaryFormatter();                formatter.Serialize(stream, t);                stream.Flush();            }        }        /// <summary>        /// 將字符串反序列化為類型        /// </summary>        public static TResult Deserialize<TResult>(string s) where TResult : class        {            byte[] bs = System.Text.Encoding.UTF8.GetBytes(s);            using (MemoryStream stream = new MemoryStream(bs))            {                BinaryFormatter formatter = new BinaryFormatter();                return formatter.Deserialize(stream) as TResult;            }        }        /// <summary>        /// 將文件反序列化為類型        /// </summary>        public static TResult DeserializeFromFile<TResult>(string path) where TResult : class        {            using (FileStream stream = new FileStream(path, FileMode.Open))            {                BinaryFormatter formatter = new BinaryFormatter();                return formatter.Deserialize(stream) as TResult;            }        }    }}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 漳平市| 古交市| 当阳市| 长岛县| 文化| 文登市| 牡丹江市| 云林县| 沈丘县| 溧阳市| 新龙县| 广丰县| 诸城市| 弋阳县| 滕州市| 无为县| 二连浩特市| 深水埗区| 太白县| 云安县| 全椒县| 环江| 阿瓦提县| 赞皇县| 兴山县| 南康市| 二连浩特市| 礼泉县| 波密县| 蓬安县| 新宾| 盘锦市| 赤峰市| 方山县| 荣昌县| 大渡口区| 大丰市| 资阳市| 光泽县| 沾化县| 石河子市|