.NET序列化学习
来源:互联网 发布:java简历项目经验范文 编辑:程序博客网 时间:2024/05/17 09:45
**序列化:将(数据)对象转换为可存储或者可传输格式的过程。
反序列化:从物质介质或流(stream)上获取数据(对象)。
目的:将对象持久化(持久化的对象就可以实现永久的存储和值封送)。**
.NET提供2种强大的序列化技术:一种是二进制序列化,另一种是XML序列化。
System.Runtime.Serialization,用于实现二进制序列化,其中IFormatter接口提供了对象序列化的功能,BinaryFormatter和SoapFormatter分别用于将对象序列化为二进制格式和Soap格式。
- 二进制序列化Demo:
[Serializable] public class UserInfo { public string Name; public Int32 Age; public bool IsVip; public UserInfo(string name, Int32 age, bool isVip) { Name = name; Age = age; IsVip = isVip; } }
class Program { static void Main(string[] args) { BinarySerialize(new UserInfo("wq", 26, false)); var user = BinaryDeserialize(); } static void BinarySerialize(UserInfo user) { var fileStream = new FileStream("MySerialize.bin", FileMode.Create); var formatter = new BinaryFormatter(); formatter.Serialize(fileStream, user); fileStream.Close(); } static UserInfo BinaryDeserialize() { var fileStream = new FileStream("MySerialize.bin", FileMode.Open, FileAccess.Read, FileShare.Read); var formatter = new BinaryFormatter(); var user = formatter.Deserialize(fileStream) as UserInfo; fileStream.Close(); return user; } }
System.Xml.Serialization,用于实现XML序列化,其中最重要的类型为XmlSerializer类,它提供了相应的Serialize方法和Deserialize方法来完成XML格式的序列化和反序列化。(注意:1、XML序列化不能完成方法,索引器,私有字段和制度属性的序列化,而必须由二进制序列化完成。2、需要序列化的对象必须有无参数的构造函数。)
- XML序列化Demo
[Serializable] public class UserInfo { private string Name;//该字段不会再XML中显示 public Int32 Age; public bool IsVip; public UserInfo(){}//必须提供无参构造器,否则XmlSerializer将出错 public UserInfo(string name, Int32 age, bool isVip) { Name = name; Age = age; IsVip = isVip; } }
class Program { static void Main(string[] args) { var xmlSerializer = new XmlSerializer(typeof(UserInfo)); var streamWriter = new StreamWriter("MySerialize.txt"); xmlSerializer.Serialize(streamWriter, user); streamWriter.Close(); var fileStream = new FileStream("MySerialize.txt", FileMode.Open); var a = xmlSerializer.Deserialize(fileStream) as UserInfo; fileStream.Close(); } }
此处参考自:你必须知道的.NET(第二版) 作者:王涛
0 0
- .NET序列化学习
- .Net 序列化学习笔记
- java 序列化学习
- java 序列化学习
- java序列化学习
- 序列化学习
- 我的序列化学习
- Java序列化学习笔记
- DotNet 序列化学习笔记
- java序列化学习笔记
- java 序列化学习笔记
- C# Serializable 序列化学习
- Java序列化学习笔记
- Kryo序列化学习笔记
- Android 序列化学习总结
- .net中的json序列化与反序列化学习资料收集
- java对象序列化学习笔记
- java对象序列化学习笔记
- php 5.4中php-fpm 的重启、终止操作命令
- NYOJ_268_荷兰国旗问题
- warning C4541: 'dynamic_cast' used on polymorphic type 'class CWnd' with /GR-; unpredictable behavi
- 大话数据机构——第一张 数据结构绪论
- javascipt 跨域资源共享、JSONP
- .NET序列化学习
- js 的each()方法遍历对象和数组
- Struts2的流程
- 百度地图大头针图片的自定义
- android开发出现No Launcher activity found!解决方案
- 手工创建TR打包对象并导入到其他任意SAP系统
- 怎样写一个解释器
- 如何学习cocos2d-x
- 播放请求下来的gif图片