反射我也不懂,序列化略知一点.....
比如你玩某些游戏时,由于某种原因退出,但再重新进入游戏时,还是接着你刚刚退出前的;
这里面就用到了序列化和反序列化,序列化是将对象当前所有数据保存到本地磁盘,反序列化就是将本地磁盘的文件的数据加载到程序运行中对应的对象中;
序列化和反序列化操作:
对于你需要保存的对象的类,在类开头做可序列化标记[Serializable](记住只要是要保存的都要做,父子类都要单独做);
给你一个序列化操作的类吧,就两个方法,你参考参考:
class FileOP
{
//文件保存的路径
private string path;
public FileOP(string path)
{
this.path = path;
}
/// <summary>
/// 反序列化操作
/// </summary>
/// <returns>返回值为 object</returns>
public Object LoadInfo()
{
FileStream fs = null;
try
{
fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None);
return new BinaryFormatter().Deserialize(fs);
}
finally
{
if(fs!=null) fs.Close();
}
}
/// <summary>
/// 序列化操作
/// </summary>
/// <returns>返回值为 object</returns>
public void SaveInfo(Object obj)
{
FileStream fs = null;
try
{
fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None);
new BinaryFormatter().Serialize(fs, obj);
}
finally
{
if (fs != null) fs.Close();
}
}
}
希望对你有所帮助 |