序列化就是把一个对象转化成二进制流存储起来,当下次使用的使用再反序列化得到数据的原型; 如下实例代码: static void Main(string[] args) { //定义一个Book对象 Book book = new Book("Day and Night", 30.0f, "Bruce");
//Book对象序列化 using(FileStream fs = new FileStream(@"C:\book.dat", FileMode.Create)) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(fs, book); } book = null;
//反序列化 using(FileStream fs = new FileStream(@"C:\book.dat", FileMode.Open)) { BinaryFormatter formatter = new BinaryFormatter(); book = (Book)formatter.Deserialize(fs);//在这里大家要注意咯,他的返回值是object } }-------------------------------------------------- “苏州软件(微软技术)实训基地”由苏州工业园区政府和微软(中国)有限公司共同建立,由苏州高博软件培训中心承办。基地以苏州工业园区软件人才培养和服务外包基地建设需求为导向,充分利用微软的软件技术、产业教育和项目管理经验,帮助学员系统掌握微软技术、真实体验项目角色、全面提升职场竞争力。 公司网址:http://www.gemsoftware.com.cn
using System;/// <summary> /// User 的摘要说明 /// </summary> [Serializable] public class User { private int _id; private string _name; public int ID { set { _id = value; } get { return _id; } } public string Name { set { _name = value; } get { return _name; } } public User() { // // TODO: 在此处添加构造函数逻辑 // } public User(int id,string name) { _id = id; _name = name; } }
<asp:Button ID="btnRedirect" Text="跳转" runat="server" OnClick="btnRedirect_Click" /> protected void btnRedirect_Click(object sender, EventArgs e) { List<User> l = new List<User>(); User u = new User(101, "xiaoT"); l.Add(u); u = new User(); u.ID = 102; u.Name = "xxx"; l.Add(u); XmlSerializer formatter = new XmlSerializer(l.GetType()); StringWriter writer = new StringWriter(); formatter.Serialize(writer, l); string url = "Default.aspx?l=" + Server.UrlEncode(writer.ToString()); writer.Close(); writer.Dispose(); Response.Redirect(url); }
Default.aspxValidateRequest="false"protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (!string.IsNullOrEmpty(Request.QueryString["l"])) { XmlSerializer formatter = new XmlSerializer(typeof(List<User>)); StringWriter writer = new StringWriter(); writer.Write(Server.UrlDecode(Request.QueryString["l"])); StringReader sr = new StringReader(writer.ToString()); writer.Close(); writer.Dispose(); List<User> l = formatter.Deserialize(sr) as List<User>; if (l != null) { foreach (User u in l) { Response.Write("ID:" + u.ID.ToString() + ",Name:" + u.Name + "<br>"); } } sr.Close(); sr.Dispose(); } } }
如下实例代码:
static void Main(string[] args)
{
//定义一个Book对象
Book book = new Book("Day and Night", 30.0f, "Bruce");
//Book对象序列化
using(FileStream fs = new FileStream(@"C:\book.dat", FileMode.Create))
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, book);
}
book = null;
//反序列化
using(FileStream fs = new FileStream(@"C:\book.dat", FileMode.Open))
{
BinaryFormatter formatter = new BinaryFormatter();
book = (Book)formatter.Deserialize(fs);//在这里大家要注意咯,他的返回值是object
}
}--------------------------------------------------
“苏州软件(微软技术)实训基地”由苏州工业园区政府和微软(中国)有限公司共同建立,由苏州高博软件培训中心承办。基地以苏州工业园区软件人才培养和服务外包基地建设需求为导向,充分利用微软的软件技术、产业教育和项目管理经验,帮助学员系统掌握微软技术、真实体验项目角色、全面提升职场竞争力。 公司网址:http://www.gemsoftware.com.cn
/// User 的摘要说明
/// </summary>
[Serializable]
public class User
{
private int _id;
private string _name; public int ID
{
set { _id = value; }
get { return _id; }
}
public string Name
{
set { _name = value; }
get { return _name; }
} public User()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public User(int id,string name)
{
_id = id;
_name = name;
}
}
<asp:Button ID="btnRedirect" Text="跳转" runat="server" OnClick="btnRedirect_Click" />
protected void btnRedirect_Click(object sender, EventArgs e)
{ List<User> l = new List<User>();
User u = new User(101, "xiaoT");
l.Add(u);
u = new User();
u.ID = 102;
u.Name = "xxx";
l.Add(u);
XmlSerializer formatter = new XmlSerializer(l.GetType());
StringWriter writer = new StringWriter();
formatter.Serialize(writer, l);
string url = "Default.aspx?l=" + Server.UrlEncode(writer.ToString());
writer.Close();
writer.Dispose();
Response.Redirect(url);
}
{
if (!IsPostBack)
{
if (!string.IsNullOrEmpty(Request.QueryString["l"]))
{
XmlSerializer formatter = new XmlSerializer(typeof(List<User>));
StringWriter writer = new StringWriter();
writer.Write(Server.UrlDecode(Request.QueryString["l"]));
StringReader sr = new StringReader(writer.ToString());
writer.Close();
writer.Dispose();
List<User> l = formatter.Deserialize(sr) as List<User>;
if (l != null)
{
foreach (User u in l)
{
Response.Write("ID:" + u.ID.ToString() + ",Name:" + u.Name + "<br>");
}
}
sr.Close();
sr.Dispose();
}
}
}
不然序列化会出错