.net 序列化反序列化
【
序列化】 就是将我们程序中的对象通过字节流写入存储媒体或网络中。
【反序列化】 就是把已存入的媒体或接收的网络流中的内容转换成程序运行中的对象。
实现方式: 二进制序列化 XML序列化
二进制序列化需要引入System..Runtime.Serialization.Formatters.Binary 中的BinaryFormatter类, 序列化方法为Serialize(Stream s, object o), 反序列化方法DeSerialize(Stream s).
XML序列化可分为Soap格式和一般xml格式序列化。分别采用System.Runtime.Serialization.Formatters.Soap.SoapFormatter 和 XmlSerializer类的以上两种方法;
示例:
1)用到类User





[NonSerialized] //不对_usercode进行序列化, [NoSerialized]只能加在域成员前面
private string _usercode;
private string _username;

public string UserCode

...{

get ...{ return _usercode; }

set ...{ _usercode = value; }
}

public string UserName

...{

get ...{ return _username; }

set ...{ _username = value; }
}
}





















2)
二进制序列化








3)二进制反序列化





4) XML序列化,反序列化--SoapFormatter















5) XML序列化,反序列化--XmlSerializer







XmlSerializer xsl = new XmlSerializer(typeof(User));
xsl.Serialize(fs, user);
fs.Close();
//
反序列化
FileStream fs
=
new
FileStream(
@"
D:/user.dat
"
, FileMode.OpenOrCreate);
XmlSerializer xsl
=
new
XmlSerializer();
User user
=
(User)xsl.Deserialize(fs);
fs.Close();
Response.Write(user.UserCode
+
user.UserName);
//
因为User类中限制将usercode进行序列化, 所以UserCode =""









net 序列化、反序列化之自定义序列化
这是继上篇序列化、反序列化的姊妹篇
自定义序列化、反序列化有两点要求:
- 类要实现System.Runtime.Serialization 命名空间的 ISerializable 接口(当然要有[Serializable]属性)。
- 类要实现两个方法:一、ISerializable 接口的 void GetObjectData(SerializationInfo info, StreamingContext context). 二、要实现一个构造函数 pubic classname(Serializationinfo info, StreamingContext context).
下面主要说明以上两个方法的作用以及给出示例代码:
void GetObjectData(Serializationinfo info, StreamContext context ) 是用来处理要进行序列化的成员,其中info 参数提供各个成员字段信息,可在此时对对象中的成员赋值,调用AddValue()方法。
构造函数是在反序列化时自动调用, 并利用info.GetStirng(GetDecimal )等函数获取值。
自定义类:















































实现:
页面加载时序列化到文件












点击按钮反序列化为对象












原文链接:http://blog.youkuaiyun.com/yardley2008/article/details/2237142