C#实现序列化和反序列化
2016-04-30 18:55
405 查看
从我们面试准备上面,我知道了一个知识点,就是我们vs提供的序列化方法有两个,一个叫二进制序列化,一个叫做xml序列化,下面我们说一下二进制序列化的C#实现:
反序列化:
序列化:
反序列化:
public static T Desrialize<T>(T obj, string str)
{
try
{
obj = default(T);
IFormatter formatter = new BinaryFormatter();
byte[] buffer = Convert.FromBase64String(str);
MemoryStream stream = new MemoryStream(buffer);
obj = (T)formatter.Deserialize(stream);
stream.Flush();
stream.Close();
}
catch (Exception ex)
{
//throw new Exception("反序列化失败,原因:" + ex.Message);
return obj;
}
return obj;
}
序列化:
public static string Serialize<T>(T obj)
{
try
{
IFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
formatter.Serialize(stream, obj);
stream.Position = 0;
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
stream.Flush();
stream.Close();
return Convert.ToBase64String(buffer);
}
catch (Exception ex)
{
throw new Exception("序列化失败,原因:" + ex.Message);
}
}
反序列化:
public static T Desrialize<T>(T obj, string str) { try { obj = default(T); IFormatter formatter = new BinaryFormatter(); byte[] buffer = Convert.FromBase64String(str); MemoryStream stream = new MemoryStream(buffer); obj = (T)formatter.Deserialize(stream); stream.Flush(); stream.Close(); } catch (Exception ex) { //throw new Exception("反序列化失败,原因:" + ex.Message); return obj; } return obj; }
序列化:
public static string Serialize<T>(T obj) { try { IFormatter formatter = new BinaryFormatter(); MemoryStream stream = new MemoryStream(); formatter.Serialize(stream, obj); stream.Position = 0; byte[] buffer = new byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); stream.Flush(); stream.Close(); return Convert.ToBase64String(buffer); } catch (Exception ex) { throw new Exception("序列化失败,原因:" + ex.Message); } }
反序列化:
public static T Desrialize<T>(T obj, string str)
{
try
{
obj = default(T);
IFormatter formatter = new BinaryFormatter();
byte[] buffer = Convert.FromBase64String(str);
MemoryStream stream = new MemoryStream(buffer);
obj = (T)formatter.Deserialize(stream);
stream.Flush();
stream.Close();
}
catch (Exception ex)
{
//throw new Exception("反序列化失败,原因:" + ex.Message);
return obj;
}
return obj;
}
序列化:
public static string Serialize<T>(T obj)
{
try
{
IFormatter formatter = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
formatter.Serialize(stream, obj);
stream.Position = 0;
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
stream.Flush();
stream.Close();
return Convert.ToBase64String(buffer);
}
catch (Exception ex)
{
throw new Exception("序列化失败,原因:" + ex.Message);
}
}
相关文章推荐
- C#实现序列化和反序列化
- C# 文件重命名
- C#碎碎念(二)快进一波
- C#中Split用法(把字符串以某个字符为分隔符分成一个数组)
- 【C#笔札】 界面逐渐显现的实现
- C#中Internal关键字的总结
- 【c#】 面向对象的编程
- C#OOP之十二 创建多线程程序
- C#OOP之十二 创建多线程程序
- C#OOP之十二 创建多线程程序
- 正则表达式相关:C# 抓取网页类(获取网页中所有信息)
- C# 小伎俩给PDF添加图片背景
- C#小伎俩获取本地或远程磁盘使用信息
- C#代码直接调用WCF服务
- C#—窗体的基本操作(实验8-3)LinkLabel
- 2.类型和变量
- C#编程基础 实验(8) (4)
- 1.NetFramwork
- 4.函数
- C#程序自杀 程序删除自己