通用的序列化方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/// <summary>
      /// 序列化数据
      /// </summary>
      /// <param name="obj">对象</param>
      /// <returns>二进制流</returns>
      private byte[] GetBinaryFormatSerialize(object obj)
      {
          //创建支持存储区为内存的流
          MemoryStream Memory = new MemoryStream();
          //以二进制格式将整个连接对象图形序列化和反序列化
          BinaryFormatter formatter = new BinaryFormatter();
          //将对象序列化为附加所提供标题的给定流
          formatter.Serialize(Memory, obj);
          byte[] buff = Memory.ToArray();
          Memory.Close();
          Memory.Dispose();
          return buff;
      }
 
      /// <summary>
      /// 反序列化对象
      /// </summary>
      /// <typeparam name="T">类型</typeparam>
      /// <param name="buff">二进制数据</param>
      /// <returns>反序列后结果</returns>
      private T RetrieveDeserialize<T>(byte[] buff)
      {
          //创建支持存储区为内存的流
          MemoryStream Memory = new MemoryStream();
          //以二进制格式将整个连接对象图形序列化和反序列化。
          BinaryFormatter formatter = new BinaryFormatter();
          return (T)formatter.Deserialize(new MemoryStream(buff));
      }
1
 
1
 
1
2
3
4
5
6
7
8
9
10
<pre class="brush:csharp">           //调用
        DataTable dt = new DataTable();
            #region 序列化
            byte[] buff = GetBinaryFormatSerialize(dt);
            #endregion
 
            #region  反序列化
            dt = RetrieveDeserialize<DataTable>(buff);
            #endregion
</pre>

posted on   邹泽栋  阅读(1268)  评论(3编辑  收藏  举报

努力加载评论中...

导航

点击右上角即可分享
微信分享提示