必须添加引用:
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
方法:
#region 对象序列化
/// <summary>
/// 对象序列化
/// </summary>
/// <param name="obj">任意对象</param>
/// <returns>字符串</returns>
public static string SerializeObject(object obj)
{
IFormatter formatter = new BinaryFormatter();
string result = string.Empty;
using(MemoryStream stream = new MemoryStream())
{
formatter.Serialize(stream,obj);
byte[] byt = new byte[stream.Length];
byt = stream.ToArray();
//result = Encoding.UTF8.GetString(byt, 0, byt.Length); //用其他编码会有异常:SerializationException: 二进制流“0”不包含有效的 BinaryHeader。
result = Convert.ToBase64String(byt);
stream.Flush();
}
return result;
}
#endregion
#region 反序列化
/// <summary>
/// 反序列化
/// </summary>
/// <param name="str">字符串</param>
/// <returns>对象</returns>
public static object DeserializeObject(string str)
{
IFormatter formatter = new BinaryFormatter();
//byte[] byt = Encoding.UTF8.GetBytes(str); //用其他编码会有异常:SerializationException: 二进制流“0”不包含有效的 BinaryHeader。
byte[] byt = Convert.FromBase64String(str);
object obj = null;
using(Stream stream = new MemoryStream(byt,0,byt.Length))
{
obj = formatter.Deserialize(stream);
}
return obj;
}
#endregion
说明:在使用前必须在需要序列化的对象(比如实体)前加关键字:[Serializable]