引用:

序列化与反序列化

解释:

序列化,就是将一个对象保存到文件中去,而反序列化就是将该文件重新保存为一个对象.

序列化的三种方式:

1.BinaryFormatter

    class BinarySerialize : ISerialize{FileStream fs;string filepath = @"D:/1/1.txt";public void Serialize(Book book){using (fs = new FileStream(filepath, FileMode.Create)){BinaryFormatter formate = new BinaryFormatter();formate.Serialize(fs, book);}}public Book DeSerialize(){Book book;using (fs = new FileStream(filepath, FileMode.Open)){BinaryFormatter formate = new BinaryFormatter();book = (Book)formate.Deserialize(fs);}return book;}}
序列化之后结果如下:
 

2.SoapFormatter

    class SoapSerialize : ISerialize{FileStream fs;string filepath = @"D:/1/2.txt";public void Serialize(Book book){using (fs = new FileStream(filepath, FileMode.Create)){SoapFormatter formate = new SoapFormatter();formate.Serialize(fs, book);}}public Book DeSerialize(){Book book;using (fs = new FileStream(filepath, FileMode.Open)){SoapFormatter formate = new SoapFormatter();book = (Book)formate.Deserialize(fs);}return book;}}
序列化之后,结果如下;
 

3.XmlSerializer

    class XMLSeria : ISerialize{FileStream fs;string filepath = @"D:/1/3.txt";public void Serialize(Book book){using (fs = new FileStream(filepath, FileMode.Create)){XmlSerializer formate = new XmlSerializer(typeof(Book));formate.Serialize(fs, book);}}public Book DeSerialize(){Book book;using (fs = new FileStream(filepath, FileMode.Open)){XmlSerializer formate = new XmlSerializer(typeof(Book));book = (Book)formate.Deserialize(fs);}return book;}}
序列化之后,结果如下:
 
完整源码如下:
代码段1:
定义类库Define
namespace Define
{[Serializable]public class Book{string bookname;public string BookName{get{return this.bookname;}set{this.bookname = value;}}int price;public int Price{get{return this.price;}set{this.price = value;}}public override string ToString(){return "BookName:" + this.bookname + "<br/>Price:" + this.price.ToString() + "<br/>";}}public interface ISerialize{void Serialize(Book book);Book DeSerialize();}class BinarySerialize : ISerialize{FileStream fs;string filepath = @"D:/1/1.txt";public void Serialize(Book book){using (fs = new FileStream(filepath, FileMode.Create)){BinaryFormatter formate = new BinaryFormatter();formate.Serialize(fs, book);}}public Book DeSerialize(){Book book;using (fs = new FileStream(filepath, FileMode.Open)){BinaryFormatter formate = new BinaryFormatter();book = (Book)formate.Deserialize(fs);}return book;}}class SoapSerialize : ISerialize{FileStream fs;string filepath = @"D:/1/2.txt";public void Serialize(Book book){using (fs = new FileStream(filepath, FileMode.Create)){SoapFormatter formate = new SoapFormatter();formate.Serialize(fs, book);}}public Book DeSerialize(){Book book;using (fs = new FileStream(filepath, FileMode.Open)){SoapFormatter formate = new SoapFormatter();book = (Book)formate.Deserialize(fs);}return book;}}class XMLSeria : ISerialize{FileStream fs;string filepath = @"D:/1/3.txt";public void Serialize(Book book){using (fs = new FileStream(filepath, FileMode.Create)){XmlSerializer formate = new XmlSerializer(typeof(Book));formate.Serialize(fs, book);}}public Book DeSerialize(){Book book;using (fs = new FileStream(filepath, FileMode.Open)){XmlSerializer formate = new XmlSerializer(typeof(Book));book = (Book)formate.Deserialize(fs);}return book;}}public interface BaseFacotry{ISerialize CreateSerialize();}class BinaryFactory : BaseFacotry{public ISerialize CreateSerialize(){return new BinarySerialize();}}class SoapFactory : BaseFacotry{public ISerialize CreateSerialize(){return new SoapSerialize();}}class XMLFactory : BaseFacotry{public ISerialize CreateSerialize(){return new XMLSeria();}}
}
代码段2:
前台调用:
    <asp:Button ID="BinaryFactory" runat="server" Text="BinarySerialize" οnclick="Btn_Click" /><asp:Button ID="SoapFactory" runat="server" Text="SoapSerialize" οnclick="Btn_Click" /><asp:Button ID="XMLFactory" runat="server" Text="XMLSerialize" οnclick="Btn_Click"  />protected void Btn_Click(object sender, EventArgs e){Book book = new Book();book.BookName = "入门经典";book.Price = 120;string id = ((Button)sender).ID;BaseFacotry factory = (BaseFacotry)Assembly.Load("Define").CreateInstance("Define." + id);ISerialize serialize = factory.CreateSerialize();serialize.Serialize(book);Book b = serialize.DeSerialize();Response.Write(b.ToString());}

转载于:https://www.cnblogs.com/loveYN/p/4509703.html

C#--序列化与反序列化相关推荐

  1. [Java]LeetCode297. 二叉树的序列化与反序列化 | Serialize and Deserialize Binary Tree

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  2. 序列化和反序列化实现

    1. 什么是序列化? 程序员在编写应用程序的时候往往需要将程序的某些数据存储在内存中,然后将其写入文件或是将其传输到网络中的另一台计算机上以实现通讯.这个将程序数据转换成能被存储并传输的格式的过程被称 ...

  3. Json的序列化和反序列化

    1.引用命名空间: using System.Runtime.Serialization; 2.json的序列化和反序列化的方法: publicclass JsonHelper { ///<su ...

  4. C#实现对象的Xml格式序列化及反序列化

    要序列化的对象的类: [Serializable] public class Person { private string name; public string Name { get { retu ...

  5. c语言xml序列化,C# XML和实体类之间相互转换(序列化和反序列化)

    我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改. using System; using System.Collections.Ge ...

  6. 十三、序列化和反序列化(部分转载)

    json和pickle序列化和反序列化 json是用来实现不同程序之间的文件交互,由于不同程序之间需要进行文件信息交互,由于用python写的代码可能要与其他语言写的代码进行数据传输,json支持所有 ...

  7. java培训教程分享:Java中怎样将数据对象序列化和反序列化?

    本期为大家介绍的java培训教程是关于"Java中怎样将数据对象序列化和反序列化?"的内容,相信大家都知道,程序在运行过程中,可能需要将一些数据永久地保存到磁盘上,而数据在Java ...

  8. K:java中的序列化与反序列化

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?以下内容将围绕这些问题进行展开讨论. Java序列化与反序列化 简单来说Java序列化是指把Java对象转 ...

  9. json的序列化与反序列化

    json 是一种轻量级的数据交换格式,也是完全独立于任何程序语言的文本格式. 本文介绍json字符串的序列化与反序列化问题. 序列化 是指将变量(对象)从内存中变成可存储或可传输的过程. 反序列化 是 ...

  10. 深入分析Java的序列化与反序列化

    阅读目录 Java对象的序列化 如何对Java对象进行序列化与反序列化 序列化及反序列化相关知识 ArrayList的序列化 ObjectOutputStream 总结 序列化是一种对象持久化的手段. ...

最新文章

  1. 简单天气应用开发——基本功能完成
  2. WinAPI: GetSystemDirectory - 返回 System 文件夹路径
  3. 关于从页面中获取用户控件中的其它控件(如DropDownList)事件的方法
  4. 查询七天之内所有生日的客户
  5. Linux系列:Ubuntu/fedora实用小技巧—禁止自动锁屏、设置免密码自动登录、免密码执行sudo操作...
  6. 数据结构与算法--二叉查找树转顺序排列双向链表
  7. stm32f429vref怎么接_STM32如何通过内部VREF得到实际的VDDA值
  8. SQL Server 2005两种快照隔离机制的比较
  9. 计算机桌面点不进系统,电脑无法进入系统怎么办?
  10. 无GPU条件下安装caffe
  11. 在经历了6个月的学习后,我终于上架了自己的第一款APP---酷课堂iOS群问答精华整理(201807期)
  12. 强烈推荐-这个方法让chrome浏览器拓展程序打包成.crx文件最快?
  13. pandas中的窗口对象(窗口函数)
  14. 解决office2003 32位卸载不干净 无法安装office2013 64位在问题
  15. 【花雕动手做】有趣好玩的音乐可视化系列小项目(18)--LED平面板灯
  16. 场效应管微变等效电路的计算_微变等效电路如图.ppt
  17. 关于彻底获得管理员权限的方法。(解决PYTHON PS 等报错问题)
  18. Python 十进制转换为二进制 高位补零
  19. 告别传统开店模式,借鉴餐饮理发店经营思路,谁都可以当甩手掌柜
  20. 使用deepin-Wine在ubuntu下安装QQ,TIM,微信等软件,以及deepin-wine的快捷键设置

热门文章

  1. 新的开始 和一些总结
  2. 如何在myeclipse中导入jar包?
  3. 用JDBC直连方式访问SQL Server 2005详解
  4. android IO流_Flutter实战经验(十):打包和发布到 Android 平台
  5. Wine下完美安装QQ 2010:
  6. php读取西门子plc_PLC对模拟量信号,是怎么进行处理的?
  7. 数据增长率怎么算_20年老股民告诉你5个数据可轻松算出股价是否高估
  8. php正则替换p闭合标签,php正则替换标签的实现方法
  9. vue基础教程总结篇,用最短的时间入门vue.js(持续更新...)
  10. Bash脚本教程之引号和转义