数据传输的唯一格式是二进制格式,所以在传输之前我们得将要传输的数据转换为二进制格式,这就是序列化。当接收到二进制格式的数据时我们应该将其转换为其本来的格式,这就是反序列化。
例子:现有一个对象,将其序列化后存储到桌面上,之后再将桌面上接收到的二进制数据反序列化为对象。这就模拟的实现了数据的传输过程中序列化与反序列化的过程。
创建一个类:要使一个类的能序列化必须在前面加[Serializer]
[Serializer]
class Preson
{
string _name;
/// <summary>
/// 姓名属性
/// </summary>
public string Name
{
get { return _name; }
set { _name = value; }
}
int _age;
/// <summary>
/// 年龄属性
/// </summary>
public int Age
{
get { return _age; }
set { _age = value; }
}
}
序列化:
class Program
{
static void Main(string[] args)
{
//创建一个Preson对象并赋值
Preson newPreson = new Preson();
newPreson.Name = "张三";
newPreson.Age = 20;
//将该对象序列化放在桌面
//使用BinaryFormatter对象来序列化与反序列化
//使用FileStream流来将二进制写入桌面文本
using (FileStream fsWrite=new FileStream (@"C:\Users\Administrator\Desktop\xuliehua.txt",FileMode.OpenOrCreate,FileAccess.Write))
{
//创建一个binaryFormatter对象来序列化
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fsWrite,newPreson );
Console.WriteLine("序列化完成!");
Console.ReadKey();
}
}
}
反序列化://反序列化
using (FileStream fsRead=new FileStream (@"C:\Users\Administrator\Desktop\xuliehua.txt",FileMode.OpenOrCreate,FileAccess.Read))
{
BinaryFormatter bf = new BinaryFormatter();
//接收反序列化好的对象
Preson p = (Preson )bf.Deserialize(fsRead);
Console.WriteLine(p.Name);//输出张三
Console.WriteLine(p.Age);//输出20
Console.ReadKey();
}