写个序列化与反序列化例子吧
2008-10-28 14:42 Rainbow 阅读(563) 评论(0) 收藏 举报定义个实体类:
[Serializable]
class User
{
//私有字段
string _Name;
int _Age;
bool _Sex;
//公开属性
public string Name
{
get { return _Name; }
set {_Name=value;}
}
public int Age
{
get { return _Age; }
set { _Age = value; }
}
public bool Sex
{
get { return _Sex; }
set { _Sex = value; }
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="Name"></param>
/// <param name="Age"></param>
/// <param name="Sex">男:True 女:False</param>
public User(string Name, int Age, bool Sex)
{
this._Name = Name;
this._Age = Age;
this._Sex = Sex;
}
}
/// <summary>
/// 序列化类为一个二进制数组,方便存入数据库
/// </summary>
/// <param name="pObj"></param>
/// <returns></returns>
public static byte[] SerializeObject(object pObj)
{
if (pObj == null)
return null;
System.IO.MemoryStream _memory = new System.IO.MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(_memory, pObj);
_memory.Position = 0;
byte[] read = new byte[_memory.Length];
_memory.Read(read, 0, read.Length);
_memory.Close();
return read;
}
/// <summary>
/// 从二进制数组反序列化
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public static User DeBinSerialze(byte[] model)
{
IFormatter formatter = new BinaryFormatter();
Stream stream = new MemoryStream(model);
User obj = (User)formatter.Deserialize(stream);
stream.Close();
return obj;
}
/// <summary>
/// 序列化类到文件
/// </summary>
/// <param name="obj"></param>
public static void BinSerialze(object obj)
{
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, obj);
stream.Close();
}
/// <summary>
/// 从文件反序列化类
/// </summary>
/// <returns></returns>
public static User DeBinSerialze()
{
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
User obj = (User)formatter.Deserialize(stream);
stream.Close();
return obj;
}
浙公网安备 33010602011771号