亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

編寫高質量代碼改善C#程序的157個建議——建議55:利用定制特性減少可序列化的字段

2019-11-14 14:05:56
字體:
來源:轉載
供稿:網友

建議55:利用定制特性減少可序列化的字段

特性(attribute)可以聲明式地為代碼中的目標元素添加注釋。運行時可以通過查詢這些托管塊中的元數據信息,達到改變目標元素運行時行為的目的。System.Runtime.Serialization命名空間下,有4個這樣的特性:

  • OnDeserializedAttribute,當它應用于某方法時,會指定在對象反序列化后立即調用此方法。
  • OnDeserializingAttribute,當他應用于某方法是,會指定在反序列化對象時調用此方法。
  • OnSerializedAttribute,當它應用于某方法時,會指定在對象序列化后立即調用此方法。
  • OnSerializingAttribute,當他應用于某方法是,會指定在序列化對象時調用此方法。

利用這些特性,可以更加靈活地處理序列化和反序列化。例如,我們可以利用這一點,進一步減少某些可序列化的字段。

Person類由ChineseName、FirstName、LastName字段組成:

    [Serializable]    class Person    {        public string FirstName;        public string LastName;        public string ChineseName;    }

我們知道,ChineseName實際可以有FirstName和LastName推斷出,所以這意味著ChineseName不需要被序列化。這時候,我們就可以利用特性,提供一個方法在序列化完成后計算ChineseName的值:

    class PRogram    {        static void Main()        {            Person liming = new Person() { FirstName = "Ming", LastName = "Li", ChineseName = "Li Ming" };            BinarySerializer.SerializeToFile(liming, @"c:/", "Person.txt");            Person person = BinarySerializer.DeserializeFromFile<Person>(@"c:/Person.txt");            Console.WriteLine(person.ChineseName);        }    }    [Serializable]    class Person    {        public string FirstName;        public string LastName;        [NonSerialized]        public string ChineseName;        [OnDeserializedAttribute]        void OnSerialized(StreamingContext context)        {            ChineseName = string.Format("{0} {1}", LastName, FirstName);        }    }

序列化工具類:

    public class BinarySerializer    {        //將類型序列化為字符串        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());            }        }        //將類型序列化為文件        public static void SerializeToFile<T>(T t, string path, string fullName)        {            if (!Directory.Exists(path))            {                Directory.CreateDirectory(path);            }            string fullPath = Path.Combine(path, fullName);            using (FileStream stream = new FileStream(fullPath, FileMode.OpenOrCreate))            {                BinaryFormatter formatter = new BinaryFormatter();                formatter.Serialize(stream, t);                stream.Flush();            }        }        //將字符串反序列化為類型        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;            }        }        //將文件反序列化為類型        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;            }        }    }

 

 

 

 

轉自:《編寫高質量代碼改善C#程序的157個建議》陸敏技


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本一区二区三区四区视频| 亚洲综合小说区| 高跟丝袜欧美一区| 久久免费视频观看| 亚洲性生活视频在线观看| 亚洲成人动漫在线播放| 伊人av综合网| 国产成人精品电影| 日韩欧美亚洲范冰冰与中字| 成人久久精品视频| 热re99久久精品国产66热| 97在线精品视频| 精品亚洲一区二区三区在线播放| 欧美国产日韩在线| 国产综合视频在线观看| 欧美中文在线视频| 亚洲免费av网址| 欧洲永久精品大片ww免费漫画| 在线看国产精品| 成人精品久久一区二区三区| 中文字幕日本精品| 亚洲香蕉伊综合在人在线视看| 亚洲国产高潮在线观看| 欧美美女操人视频| 亚洲精品自产拍| 成人免费黄色网| 日韩av一卡二卡| 2019国产精品自在线拍国产不卡| 国产精品一香蕉国产线看观看| 国产精品入口夜色视频大尺度| 亚洲区免费影片| 亚洲丝袜av一区| 欧美午夜xxx| 国产精品高清在线观看| 欧美激情一区二区三区高清视频| 97精品久久久中文字幕免费| 成人免费网站在线| 国产午夜精品理论片a级探花| 成人日韩在线电影| 亚洲精品日韩欧美| 亚洲日韩中文字幕在线播放| 亚洲经典中文字幕| 亚洲人成电影网站| 欧美午夜影院在线视频| 精品高清一区二区三区| 亚洲精品视频中文字幕| 成人免费观看49www在线观看| 亚洲天堂色网站| 黑人巨大精品欧美一区二区一视频| 国产视频久久网| 国产美女精品视频免费观看| 国产亚洲欧美日韩精品| www.久久撸.com| 国产午夜精品免费一区二区三区| 欧美日韩国产限制| 欧美激情一区二区三区在线视频观看| 欧美激情图片区| 久久av在线播放| 欧美日韩亚洲网| 午夜精品久久久久久久99黑人| 欧美高清性猛交| 国产精自产拍久久久久久蜜| 亚洲欧美在线x视频| 98精品国产高清在线xxxx天堂| 亚洲色图17p| 国产亚洲人成网站在线观看| 欧美疯狂性受xxxxx另类| 欧美日韩中国免费专区在线看| 欧美日韩福利在线观看| 这里只有精品丝袜| 日韩av男人的天堂| 亚洲女人天堂色在线7777| 亚洲一区二区三区sesese| 亚洲精品自在久久| 成人午夜一级二级三级| 国产丝袜一区二区三区免费视频| 国产日韩欧美视频在线| 亚洲天堂第二页| 精品成人乱色一区二区| 欧美午夜无遮挡| 精品一区电影国产| 91精品久久久久久久久久另类| 精品人伦一区二区三区蜜桃网站| 97在线视频免费看| 亚洲精品一区中文字幕乱码| 久久久久久91| 亚洲国产成人91精品| 日韩黄色在线免费观看| 青草青草久热精品视频在线观看| 奇米成人av国产一区二区三区| 色偷偷888欧美精品久久久| 亚洲欧美国产一本综合首页| 久久久久久久电影一区| 欧美成人免费一级人片100| 亚洲国产精品成人va在线观看| 亚洲成人黄色在线观看| 91精品久久久久久久久中文字幕| 欧美性生交xxxxx久久久| 91在线看www| 久久久精品电影| 欧美理论在线观看| 亚洲精品久久久久久下一站| 欧美专区在线播放| 久久久免费精品视频| 欧美成人精品在线视频| 亚洲色图25p| 在线播放国产一区中文字幕剧情欧美| 国产日本欧美一区二区三区在线| 九色91av视频| 欧美一区在线直播| 日韩男女性生活视频| 91美女片黄在线观| 亚洲v日韩v综合v精品v| 久久99国产精品久久久久久久久| 日韩成人在线电影网| 久久久久久久久久久免费| 国产精品高潮呻吟久久av无限| 68精品久久久久久欧美| 亚洲深夜福利在线| 国产亚洲欧美日韩一区二区| 日韩成人在线免费观看| y97精品国产97久久久久久| 97久久超碰福利国产精品…| 国产中文欧美精品| 成人福利视频在线观看| 日韩精品视频免费| 成人免费视频网| 中文字幕成人在线| 亚洲欧美日韩在线高清直播| 成人xxxx视频| 久久福利网址导航| 久久精品国产精品| 亚洲人成电影在线观看天堂色| 亚洲а∨天堂久久精品9966| 91九色国产视频| 国产精品www色诱视频| 成人性生交xxxxx网站| 亚洲石原莉奈一区二区在线观看| 欧美激情免费观看| 北条麻妃一区二区在线观看| 3344国产精品免费看| 日韩人在线观看| 欧美成在线观看| 国产午夜精品全部视频在线播放| 国色天香2019中文字幕在线观看| 日韩va亚洲va欧洲va国产| 亚洲男人天堂古典| 日韩欧美精品网址| 亚洲区中文字幕| 成人中文字幕+乱码+中文字幕| 国产免费一区视频观看免费| 国产精品高精视频免费| 亚洲欧美激情在线视频| 麻豆国产精品va在线观看不卡| 日韩最新av在线| 国产精品久久国产精品99gif| 少妇av一区二区三区| 中文字幕亚洲一区| 欧美激情视频在线| 久久的精品视频| 欧美丰满少妇xxxxx做受| 欧美电影在线播放| 日韩中文理论片| 久久影院在线观看|