今天测试了一下C#的序列化与反序列化,一下就成功了。
被序列化以后的流可以保存为文件也可以通过网络发送出去。
挺好的功能。
以下是测试时自己想出来测试的代码:
using System;
using System.Collections.Generic;
using System.Text;
//以下为添加的
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MyClass a = new MyClass();
a.name = "张三";
a.age="22";
MemoryStream ms = Serialize.SerializeBinary(a);
MyClass b = new MyClass();
b = (MyClass)Serialize.DeSerializeBinary(ms);
Console.WriteLine(b.name + " " + b.age);
}
}
[Serializable] //将类标记为可序列化
class MyClass
{
public string name;
public string age;
}
/// <summary>
/// 序列化或反序列化
/// </summary>
class Serialize
{
/// <summary>
/// 序列化对象
/// </summary>
/// <param name="obj">对象</param>
/// <returns>内存流</returns>
public static MemoryStream SerializeBinary(object obj)
{
BinaryFormatter serializer = new BinaryFormatter();
MemoryStream memStream = new MemoryStream(); //创建一个内存流存储区
serializer.Serialize(memStream, obj);
return memStream;
}
/// <summary>
/// 反序列化为对象
/// </summary>
/// <param name="memStream">内存流</param>
/// <returns>对象</returns>
public static object DeSerializeBinary(MemoryStream memStream)
{
memStream.Position = 0;
BinaryFormatter deserializer = new BinaryFormatter();
object obj = deserializer.Deserialize(memStream);
memStream.Close();
return obj;
}
}
}