序列化:序列化指的是 将对象 通过流的方式 保存为一个文件。 反序列化则是将该文件还原成 对象的过程。

序列化的作用:序列化可以跨语言跨平台 传输数据,将某一对象序列化成通用的文件格式在进行传输。 比如XML 等。

C# 中的序列化方法有一下4种:

1.BinaryFormatter

2.SoapFormatter(.net 3.5 开始便废弃它了,不要在生产代码中使用它)

3.XmlSerializer

4.Json

首先查看 BinaryFormatter 序列化 反序列化

//Serializable 标示可序列化
[Serializable]
public class Cars
{
public ArrayList carBrandList; //品牌数组
public Cars()
{
carBrandList = new ArrayList();
}
public string CarName;
[NonSerialized] //标示不可序列化
public string carNumber; public string CarID
{ get; set; } private string _carPrice;
public void SetCarPrice(string price)
{
_carPrice = price;
}
}
static void Main(string[] args)
{
//实例化对象
Cars cars = new Cars();
cars.CarID = "";
cars.carBrandList.Add("宝马");
cars.carBrandList.Add("路虎");
cars.carBrandList.Add("布加迪");
cars.CarName = "路虎-揽胜极光";
cars.carNumber = "闽A-0888A";
cars.SetCarPrice("590000.00"); //BinaryFormatter 序列化
string strFile = "c:\\cars.txt";
using (FileStream fs = new FileStream(strFile, FileMode.Create))
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, cars);
}
Cars car = DeSerialize(); //
}
//反序列化
public Cars DeSerialize()
{
string strFile = "c:\\cars.txt";
Cars cars;
using (FileStream fs = new FileStream(strFile, FileMode.Open))
{
BinaryFormatter formatter = new BinaryFormatter();
cars = (Cars)formatter.Deserialize(fs);
}
return cars;
}

接下来查看下 反序列化回来的对象属性

SoapFormatter序列化反序列化

  //Serializable 标示可序列化
[Serializable]
public class Cars
{
public ArrayList carBrandList; //品牌数组 public Cars()
{
carBrandList = new ArrayList();
} public string CarName; [NonSerialized] //标示不可序列化
public string carNumber; public string CarID
{ get; set; } private string _carPrice; public void SetCarPrice(string price)
{
_carPrice = price;
} }
static void Main(string[] args)
{
//SoapFormatter 序列化
string strSoapFile = "c:\\cars.Soap";
using (FileStream fs = new FileStream(strSoapFile, FileMode.Create))
{
SoapFormatter formatter = new SoapFormatter();
formatter.Serialize(fs, cars);
}
Cars scar = DeSoapSerialize();
} //反序列化
public Cars DeSoapSerialize()
{
string strFile = "c:\\cars.Soap";
Cars cars;
using (FileStream fs = new FileStream(strFile, FileMode.Open))
{
SoapFormatter formatter = new SoapFormatter();
cars = (Cars)formatter.Deserialize(fs);
}
return cars;
}

XmlSerializer 序列化 反序列化

//Serializable 标示可序列化
[Serializable]
public class Cars
{
public ArrayList carBrandList; //品牌数组 public Cars()
{
carBrandList = new ArrayList();
} public string CarName; [NonSerialized] //标示不可序列化
public string carNumber; public string CarID
{ get; set; } private string _carPrice; public void SetCarPrice(string price)
{
_carPrice = price;
} }
static void Main(string[] args)
{ //实例化对象
Cars cars = new Cars();
cars.CarID = "";
cars.carBrandList.Add("宝马");
cars.carBrandList.Add("路虎");
cars.carBrandList.Add("布加迪");
cars.CarName = "路虎-揽胜极光";
cars.carNumber = "闽A-0888A";
cars.SetCarPrice("590000.00"); //XmlSerializer 序列化
string strXMLFile = "c:\\cars.XML";
using (FileStream fs = new FileStream(strXMLFile, FileMode.Create))
{
XmlSerializer serializer = new XmlSerializer(typeof(Cars));
serializer.Serialize(fs, cars);
}
Cars xcar = DeXMLSerialize();
} public Cars DeXMLSerialize()
{
string strFile = "c:\\cars.XML";
Cars cars;
using (FileStream fs = new FileStream(strFile, FileMode.Open))
{
XmlSerializer formatter = new XmlSerializer(typeof(Cars));
cars = (Cars)formatter.Deserialize(fs);
}
return cars;
}

都执行完成后 大家可以查看下生产的 的 文件,查看下反序列化出来的结果 可以发现

1.单有[NonSerialized] 表示的时候  BinaryFormatter 与 Soap 是无法序列化对象属性。

2.private 私有属性 XML方式是无法序列化的。

3.XML可序列化[NonSerialized]标示的 属性。

最新文章

  1. Unity Game窗口中还原Scene窗口摄像机操作 强化版
  2. 如何在github下载开源项目到本地(Coding iOS 客户端为例)
  3. linux 学习随笔-文件目录管理
  4. Linux shell中运行命令后加上字符“&”的作用
  5. div mouseenter 事件在IE下无效
  6. 基于AppCan MAS系统,如何轻松实现移动应用数据服务?
  7. vim乱码问题
  8. SSMS2008插件开发(1)--介绍
  9. Linux指令--df,du
  10. Linux下的/etc/hosts文件
  11. linux各文件夹含义和作用
  12. iis 网页HTTP 错误 404.3 - Not Found解决方案
  13. Http协议常见状态码
  14. Java日期时间处理
  15. ECMAscript,DOM,BOM哪个比较重要
  16. 关于JFame 屏幕居中显示的问题
  17. ubunut下安装ibus_pinyin中文输入法
  18. asdm不能登录问题;浏览器必须是ie,不能是chrome或者firefox;java的版本,尤其是安全等级和例外需要调整
  19. 【吉比特】G-bits2018校园春季招聘技术类岗位笔试经验
  20. 启用yarn日志聚集功能

热门文章

  1. composer.phar的作用和安装laravel5.5.4 和 vendor目录
  2. (转)Apache转发配置
  3. Centos 6.5 安装Oracle 11g R2 on vbox
  4. modelform实例学习
  5. mysql整数类型
  6. BGP基本配置的方法
  7. 将Maven项目打包成可执行 jar文件(引用第三方jar)
  8. Java微信公众平台开发(三)--接收消息的分类及实体的创建
  9. 虚拟机之 Wordpress博客搭建
  10. Libevent使用例子,从简单到复杂