又黄又www的网站_青青草.com_在线亚洲美日韩_九九九国产视频_√天堂8资源中文在线_一区二区三区免费网站_久久久久国产一区二区三区_人妻激情偷乱视频一区二区三区_一本到在线视频

語言輔導:c#.net實體類序列化方法

發布時間:2011-08-29 共1頁

  提到為了傳遞數據,需要把作為載體的實體類序列化,好好的找了一些序列化方面的介紹。感覺下面的這個介紹比較容易介紹!
  1.什么是序列化
  序列化是將對象狀態轉換為可保持或傳輸的格式的過程,在序列化過程中,對象的公共字段和私有字段以及類的名稱(包括包含該類的程序集)都被轉換為字節流,然后寫入數據流。與序列化相對的是反序列化,它將流轉換為對象。這兩個過程結合起來,可以輕松地存儲和傳輸數據。
  2.為什么使用序列化
  a. 一個原因是將對象的狀態保持在存儲媒體中,以便可以在以后重新創建精確的副本。
  我們經常需要將對象的字段值保存到磁盤中,并在以后檢索此數據。盡管不使用序列化也能完成這項工作,但這種方法通常很繁瑣而且容易出錯,并且在需要跟蹤對象的層次結構時,會變得越來越復雜。可以想象一下編寫包含大量對象的大型業務應用程序的情形,程序員不得不為每一個對象編寫代碼,以便將字段和屬性保存至磁盤以及從磁盤還原這些字段和屬性。序列化提供了輕松實現這個目標的快捷方法。
  b.另一個原因是通過值將對象從一個應用程序域發送到另一個應用程序域中。
  例如,序列化可用于在 ASP.NET 中保存會話狀態并將對象復制到 Windows 窗體的剪貼板中。遠程處理還可以使用序列化通過值將對象從一個應用程序域傳遞到另一個應用程序域中。
  公共語言運行時 (CLR) 管理對象在內存中的分布,.NET 框架則通過使用反射提供自動的序列化機制。對象序列化后,類的名稱、程序集以及類實例的所有數據成員均被寫入存儲媒體中。對象通常用成員變量來存儲對其他實例的引用。類序列化后,序列化引擎將跟蹤所有已序列化的引用對象,以確保同一對象不被序列化多次。.NET 框架所提供的序列化體系結構可以自動正確處理對象圖表和循環引用。對對象圖表的唯一要求是,由正在進行序列化的對象所引用的所有對象都必須標記為 Serializable(請參閱基本序列化)。否則,當序列化程序試圖序列化未標記的對象時將會出現異常。
  當反序列化已序列化的類時,將重新創建該類,并自動還原所有數據成員的值。
  3.如何實現對象的序列化及反序列化
  要實現對象的序列化,首先要保證該對象可以序列化。而且,序列化只是將對象的屬性進行有效的保存,對于對象的一些方法則無法實現序列化的。
  實現一個類可序列化的最簡便的方法就是增加Serializable屬性標記類。如:
  [Serializable()]
  public class MEABlock
  {
  private int m_ID;
  public string Caption;
  public MEABlock()
  {
  ///構造函數
  }
  }
  即可實現該類的可序列化。注意序列化的類必須為Public,否則不能夠被序列化。
  要將該類的實例序列化為到文件中?.NET FrameWork提供了兩種方法:
  a .XML序列化
  使用 XmLSerializer 類,可將下列項序列化。
  公共類的公共讀/寫屬性和字段
  實現 ICollection 或 IEnumerable 的類。(注意只有集合會被序列化,而公共屬性卻不會。)
  XmlElement 對象。
  XmlNode 對象。
  DataSet 對象。
  要實現上述類的實例的序列化,可參照如下例子:
  MEABlock myBlock = new MEABlock();
  // Insert code to set properties and fields of the object.
  XmlSerializer mySerializer = new XmlSerializer(typeof(MEABlock));
  // To write to a file, create a StreamWriter object.
  StreamWriter myWriter = new StreamWriter("myFileName.xml");
  mySerializer.Serialize(myWriter, MEABlock);
  需要注意的是XML序列化只會將public的字段保存,對于私有字段不予于保存。
  生成的XML文件格式如下:
  <MEABlock>
  <Caption>Test</Caption>
  </MEABlock>
  對于對象的反序列化,則如下:
  MEABlock myBlock;
  // Constructs an instance of the XmlSerializer with the type
  // of object that is being deserialized.
  XmlSerializer mySerializer = new XmlSerializer(typeof(MEABlock));
  // To read the file, creates a FileStream.
  FileStream myFileStream = new FileStream("myFileName.xml", FileMode.Open);
  // Calls the Deserialize method and casts to the object type.
  myBlock = (MEABlock)mySerializer.Deserialize(myFileStream)
  b. 二進制序列化
  與XML序列化不同的是,二進制序列化可以將類的實例中所有字段(包括私有和公有)都進行序列化操作。這就更方便、更準確的還原了對象的副本。
  要實現上述類的實例的序列化,可參照如下例子:
  MEABlock myBlock = new MEABlock();
  // Insert code to set properties and fields of the object.
  IFormatter formatter = new BinaryFormatter();
  Stream stream = new FileStream("MyFile.bin",FileMode.Create,FileAccess.Write, FileShare.None);
  formatter.Serialize(stream, myBlock);
  stream.Close();
  對于對象的反序列化,則如下:
  IFormatter formatter = new BinaryFormatter();
  Stream stream = new FileStream("MyFile.bin", FileMode.Open,FileAccess.Read, FileShare.Read);
  MEABlock myBlock = (MEABlock) formatter.Deserialize(stream);
  stream.Close();
  4、如何變相實現自定義可視化控件的序列化、反序列化
  對于WinForm中自定義控件,由于繼承于System.Windows.Form類,而Form類又是從MarshalByRefObject繼承的,窗體本身無法做到序列化,窗體的實現基于Win32下GUI資源,不能脫離當前上下文存在。
  當然可以采用變通的方法實現控件的序列化。這里采用的是記憶類模型。
  定義記憶類(其實就是一個可序列化的實體類)用于記錄控件的有效屬性,需要序列化控件的時候,只需要將該控件的實例Copy到記憶類,演變成序列化保存該記憶類的操作。
  反序列化是一個逆過程。將數據流反序列化成為該記憶類,再根據該記憶類的屬性生成控件實例。而對于控件的一些事件、方法則可以繼續使用。
  wwf之所以強調要把類實例化,就是因為工作流和應用程序是在不同的線程中。二者之間需要用類作為傳遞數據的載體的話,就需要把該類定義為public序列化為二進制傳輸。

百分百考試網 考試寶典

立即免費試用
亚洲成年人网站在线观看| 男女交配网站| www国产精品av| 高清精品一区二区三区一区| 91大神福利视频在线| 欧美另类videos黑人极品| 日本在线一区| 日韩国产高清影视| 韩国女同性做爰三级| 久久综合999| 美女网站在线| 国产精品免费一区二区三区四区| 牛牛精品成人免费视频| 欧美黑人猛猛猛| 欧美性少妇18aaaa视频| 伊人发布在线| 亚洲一区美女| 亚洲三级国产| 亚洲精品91天天久久人人| 日韩三区在线观看| 轻轻色免费在线视频| 欧美日韩亚洲一区二区三区在线观看| 九九视频精品全部免费播放| 男人舔女人下部高潮全视频 | 免费av网页| 国产91视觉| 欧美天堂亚洲电影院在线观看| 五月天婷婷丁香网| 欧美日韩国产中文字幕| 亚州精品国产| 97理论电影| 杨幂一区二区国产精品| 色综合天天综合色综合av| 婷婷综合六月| 激情六月丁香婷婷| 卡一卡二国产精品| 中国女人内谢69视频| 日韩欧美电影在线| 久草在线资源站手机版| 欧美精品99久久| 亚洲精品国产无套在线观| 午夜色香蕉导航| 精品久久sese| 日韩va亚洲va欧美va久久| 日本wwwxxxx| 国产精品久久久久不卡| 欧美日本三区| 影音先锋中文在线播放| 国产欧美日韩伦理| 国产精品 日产精品 欧美精品| 91p0rn永久地址| 日韩国产高清一区| 日韩理论片中文av| 中文字幕在线观看播放| 清纯粉嫩极品夜夜嗨av| 欧美亚洲另类久久综合| 国产精品蜜臀在线观看| 在线观看的av| 久久久久成人精品无码| 国产精品精品久久久久久| 成人福利视频网站| 天天躁日日躁狠狠躁超碰2020| 欧美性久久久久| 成年无码av片在线| 国产午夜精品一区在线观看| 色偷偷www8888| 91极品视频在线| 国产国产精品| 国产免费人人看| 一区二区三视频| 91精品免费观看| 综合久久精品| 免费在线观看污视频| 一级黄色片网址| 亚洲一区二区中文字幕| 亚洲日本电影在线| 97se亚洲国产一区二区三区| 在线观看无遮挡| 蜜桃视频无码区在线观看| 色在人av网站天堂精品| 成人av电影在线播放| 欧美粗大gay| 免费男女羞羞的视频网站中文字幕妖精视频 | 性xxxx视频| 国产又大又黄又猛| 51久久精品夜色国产麻豆| 国产婷婷色一区二区三区四区| 手机在线免费av| 亚洲日本久久久午夜精品| 久久久久久三级| 国产成人精品一区二区| 五月婷婷欧美视频| 色小子综合网| 日本高清视频在线观看| 亚洲精品久久久久avwww潮水| 午夜dv内射一区二区| 国产91精品久久久久久久| 亚洲成人第一页| 亚洲婷婷在线| 1024在线看片你懂得| 一个人看的日本免费视频| www.中文字幕av| 亚洲黄色成人久久久| 国产精品二区二区三区| 久久国产精品久久国产精品| 亚洲欧美日韩在线不卡| 亚洲美女久久| 九七影院理论片| 毛片网站免费观看| 日本一区二区精品| 久久亚洲国产精品| 婷婷综合在线| 欧美videos粗暴| 精品无人乱码| 久久久久久91精品色婷婷| 国产www在线| 亚洲ⅴ国产v天堂a无码二区| 国产午夜福利在线播放| 国产精品二区三区| 日本精品久久久久久久| 亚洲午夜国产成人av电影男同| 菠萝蜜视频在线观看一区| 91亚洲精品| 人人在线97| 亚洲色大成网站www| 奇米777第四色| 亚洲最大色综合成人av| **欧美日韩vr在线| 疯狂欧美牲乱大交777| 99xxxx成人网| 国产精品视屏| 国产超级va在线视频| 日本不卡1区2区3区| 在线观看视频污| 影音先锋电影在线观看| 性欧美videos粗暴| 国产午夜精品无码一区二区| 国产美女作爱全过程免费视频| 韩日精品中文字幕| 精品国产乱码久久久久久老虎| 亚洲图片你懂的| 国产一二精品视频| 亚洲麻豆视频| 久久精品影视| 亚洲第一福利社区| 亚洲精品aa| 国产调教在线| 国产人成网在线播放va免费| 在线国产福利| 妞干网在线观看| 你懂得视频网站| 精品a在线观看| 亚洲综合在线免费| 日本黄网站免费| 男人插女人视频在线观看| 日韩视频在线免费播放| 视频一区二区在线观看| 国产无套精品一区二区| 成人动漫视频在线观看完整版| 2019中文字幕在线免费观看| 国产午夜精品视频| 亚洲日韩欧美视频| 中文亚洲视频在线| 日韩在线中文视频| 欧美黑人xxxⅹ高潮交| 久久久久久久一区二区三区| 日韩小视频在线观看| 久热精品视频在线免费观看| 亚洲午夜小视频| 麻豆国产va免费精品高清在线| 久久夜色精品国产欧美乱| 欧美激情影音先锋| 热久久免费视频精品| 2019中文字幕免费视频| 国产精品久久久久久网站| 国产精品亚洲综合天堂夜夜| 午夜精品久久久久久久久久久久久| 久久精品夜夜夜夜夜久久| 欧美激情综合色| 欧美精品第一页在线播放| 91麻豆国产精品| 91亚洲精品一区二区| 精品国产一区二区三区四区精华| 你懂的视频在线一区二区| 男人添女人下部高潮视频在观看| av免费一区二区| 亚洲精品国产熟女久久久| 日本三级片在线观看| 亚洲精品无遮挡| 美美女免费毛片| 国产露出视频在线观看| 国产中文字幕在线视频| 偷拍精品精品一区二区三区| 日韩08精品| 久久电影院7| 国产suv一区二区三区88区| 中文字幕免费一区| 欧美丝袜丝交足nylons图片| 中文字幕欧美日韩| caoporn国产精品免费公开|