● System.Runtime.Serialization.Formatters.Binary:这个命名空间包含了BinaryFormatter类,它能把对象串行化为二进制数据,把二进制数据串行化为对象。
● System.Runtime.Serialization.Formatters.Soap:这个命名空间包含了SoapFormatter类,它能把对象串行化为SOAP格式的XML数据,把SOAP格式的XML数据串行化为对象。
三个步骤:
1:创建对象
using System;
using System.Collections.Generic;
using System.Text;
namespace类序列化测试
{
///<summary>
///测试序列化
///</summary>
[Serializable] 一定要加上这个,指示类支持序列化
public class ClassTest
{
private string _strUserCode;
private string _strUserName;
///<summary>
///用户代码
///</summary>
public string UserCode
{
get { return this._strUserCode; }
set { this._strUserCode = value; }
}
///<summary>
///用户名称
///</summary>
public string UserName
{
get { return this._strUserName; }
set { this._strUserName = value; }
}
///<summary>
///设置用户信息
///</summary>
///<param name="userCode">用户代码</param>
///<param name="userName">用户名称和</param>
///<returns></returns>
public void SetUserInfo(string userCode, string userName)
{
this._strUserCode = userCode;
this._strUserName = userName;
}
}
}
2:序列化对象
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Xml.Serialization;
using System.IO;
2.1 二进制方式
ClassTest Ct = new ClassTest();
Ct.SetUserInfo(textBox1.Text, textBox2.Text);
IFormatter Fm = new BinaryFormatter();
Stream stream = new FileStream(@"E:"测试"类序列化"类序列化测试"类序列化测试"myfile.bin", FileMode.Create, FileAccess.ReadWrite, FileShare.None);
Fm.Serialize(stream, Ct);
stream.Close();
2.2 XML 方式
ClassTest Ct = new ClassTest();
Ct.SetUserInfo(textBox1.Text, textBox2.Text);
XmlSerializer Xs = new XmlSerializer(typeof(ClassTest));
StreamWriter myWriter = new StreamWriter(@"E:"测试"类序列化"类序列化测试"类序列化测试"myfile.xml");
Xs.Serialize(myWriter, Ct);
myWriter.Close();
3:反序列化得到对象
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(@"E:"测试"类序列化"类序列化测试"类序列化测试"myfile.bin", FileMode.Open,
FileAccess.Read, FileShare.Read);
ClassTest obj = (ClassTest)formatter.Deserialize(stream);
stream.Close();
这两种方式,二进制方式,文件小速度快,但不易阅读;XML 方式相对文件大一点,速度稍慢。但可读性较好