c# 串行【序列化】和解串【反序列化】
C# 串行【序列化】和解串【反序列化】
一. 什么是序列化和反序列话呢?
相信我们做程序的都会遇到这种情况,需要将C#中某一个结构很复杂的类的对象存储起来,或者通过网路传输到远程的客户端程序中去, 这时候用文件方式或者数据库方式存储或者传送就比较麻烦了,这个时候,最好的办法就是使用串行和解串。其实串行就是我们所说的序列化【Serialization】,而解串就是反序列化序列化Deserialization。
二.序列化有那几种:
BinaryFormatter
SoapFormatter
XmlSerializer
三.示例:
1.使用BinaryFormatter序列化和反序列化;
程序集: System.Runtime.Serialization.Formatters.Binary.dll
命名空间: System.Runtime.Serialization.Formatters.Binary
序列化:
FileStream fs = new FileStream("SerializedDate.data", FileMode.Create); 
BinaryFormatter bf = New BinaryFormatter(); 
MyClass mc = new MyClass(); 
bf.Serialize(fs, mc); 
fs.Close();
反序列化:
FileStream fs = new FileStream("SerializedDate.data", FileMode.Open); 
BinaryFormatter bf = New BinaryFormatter(); 
MyClass mc = new MyClass();
mc = (MyClass)bf.Deserialize(fs); 
fs.Close();
注意:
序列化的对象必须是具有【Serializable】标记的;即:MyClass类必须加【Serializable】标记;
bf.Serialize(fs, mc);//序列号
bf.Deserialize(fs); //反序列化
2.使用SoapFormatter序列化和反序列化;
程序集: System.Runtime.Serialization.Formatters.Soap.dll
命名空间: System.Runtime.Serialization.Formatters.Soap
3.使用XmlSerializer序列化和反序列化;
程序集: System.Xml.dll;
命名空间: using System.Xml.Serialization;
参考地址:http://msdn.microsoft.com/zh-cn/library/system.xml.serialization.xmlserializer(v=vs.80).aspx
c# 串行【序列化】和解串【反序列化】的更多相关文章
- WebService使用DataSetSurrogate压缩Dataset的序列化和解压反序列化传输 (转)
		转自:http://blog.163.com/hehong0925@126/blog/static/1339333372012102242920521/ 在WebService中将dataset序列化 ... 
- 基于RocketIO的高速串行协议设计与实现
		随着对信息流量需求的不断增长, 传统并行接口技术成为进一步提高数据传输速率的瓶颈.过去主要用于光纤通信的串行通信技术—SERDES正在取代传统并行总线而成为高速接口技术的主流.SERDES 是串行器) ... 
- 【PHP面向对象(OOP)编程入门教程】22.把对象串行化serialize()方法,__sleep()方法,__wakeup()方法
		有时候需要把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,再还原为原来的对象,这个过程称之为串行化(也叫序列化), 就像我们现在想把一辆汽车通过轮船运到美国去,因为 ... 
- PHP面向对象(OOP):把对象串行化serialize()方法,__sleep()方法,__wakeup()方法
		有时候需要把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,再还原为原来的对象,这个过程称之为串行化(也叫序列化), 就像我们现在想把一辆汽车通过轮船运到美国去,因为 ... 
- PHP面向对象04_串行化
		oop04复习 2014-9-3 10:48:45 要点: --1.克隆对象 --2.__toString( ) --3. __call( ) --4.自动加载类 --5.对象串行化 1.克隆对象以及 ... 
- (九)串行口方式0 拓展并行输入端口  74LS165 芯片
		74LS165芯片讲解: 外接一个同步移位寄存器 74LS165芯片,拓展一个 8 位 并行输入端口的电路, 可将接在74LS165芯片的8个开关 S0——S7 的状态 通过 串行口方式 0 读到 单 ... 
- 刀哥多线程串行队列gcd-04-dispatch_queue_serial
		串行队列 特点 以先进先出的方式,顺序调度队列中的任务执行 无论队列中所指定的执行任务函数是同步还是异步,都会等待前一个任务执行完成后,再调度后面的任务 队列创建 dispatch_queue_t q ... 
- STM32学习笔记——SPI串行通讯(向原子哥学习)
		一.SPI 简介 SPI是 Serial Peripheral interface 的缩写,就是串行外围设备接口.SPI 接口主要应用在 EEPROM, FLASH,实时时钟,AD 转换器,还有数 ... 
- 原创:应用串行NOR闪存提升内存处理能力
		在嵌入式系统中,NOR闪存一直以来仍然是较受青睐的非易失性内存,NOR器件的低延时特性可以接受代码执行和数据存储在一个单一的产品.虽然NAND记忆体已成为许多高密度应用的首选解决方案,但NOR仍然是低 ... 
- iOS  gcd 串行,并行,同步,异步代码研究
		参考文章: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #527eff } span.s1 { } http: ... 
随机推荐
- Careercup - Google面试题 - 6271724635029504
			2014-05-06 13:23 题目链接 原题: Finding a pair of elements from two sorted lists(or array) for which the s ... 
- Windows桌面开发者的必备软件
			如果你新安装好了一台WindowsXP或者Windows7的机器,作为一个开发人员,我建议安装下面这些软件: 1,WinMerge. http://winmerge.org/ 2, Lua for w ... 
- Class类工具 - ClassUtils.java
			Class类工具,提供操作class类的方法.<br/>比如:获知类.方法上是否有注解,获取类注解,获取某package下所有class等. 源码如下:(点击下载 - ClassUtils ... 
- WPS for ubuntu14
			QGtkStyle could not resolve GTK. Make sure you have installed the proper libraries. sudo apt-get ins ... 
- Ombrophobic Bovines - POJ 2391
			Description FJ's cows really hate getting wet so much that the mere thought of getting caught in the ... 
- 浅谈GitHub
			Git 是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub. Gith是一个基于 git 的社会化代码分享社区,所谓 social coding.你 ... 
- redis.conf配置
			# Redis configuration file example # Redis示例配置文件 # Note on units: when memory size is needed, it is ... 
- 【python】正则表达式
			参考资料:http://deerchao.net/tutorials/regex/regex.htm 1.正则表达式基础 2.python 正则表达式 1.正则表达式基础 元字符: 其他语法: (1) ... 
- Core Data 版本数据迁移
			Core Data版本迁移基础 通常,在使用Core Data的iOS App上,不同版本上的数据模型变更引发的数据迁移都是由Core Data来负责完成的.这种数据迁移模式称为Lightweight ... 
- svn 分支与合并的使用
			在使用svn的时候我们往往有这样的需求.我们修改某些代码,因为对某项技术不是非常的熟悉,担心自己当前的修改(或者叫测试)会影响到服务器中版本库代码的崩溃等.传统做法我们会手动复制一份代码,然后修改 ... 
