最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

protobuf對象二進(jìn)制序列化存儲(詳解)

 更新時間:2017年02月15日 10:49:59   投稿:jingxian  
下面小編就為大家?guī)硪黄猵rotobuf對象二進(jìn)制序列化存儲(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

首先下載protobuf庫,可以用Nuget。

demo:

using System;

namespace Tools
{
  public class BufHelp
  {
    /// <summary>
    /// 對象鎖
    /// </summary>
    private readonly static Object Locker = new Object();
    ///// <summary>
    ///// 讀寫分離鎖
    ///// </summary>
    ///// <remarks>aaaaa</remarks>
    //private static ReaderWriterLockSlim rwl = new ReaderWriterLockSlim();

    /// <summary>
    /// 序列化-表字段業(yè)務(wù)信息
    /// </summary>
    public static bool ProtoBufSerialize<T>(T model, string filename) where T : class
    {
      try
      {
        string binpath = Config.KeyCenter.KeyBaseDirectory + @"Config\";

        if (!System.IO.Directory.Exists(binpath))
          System.IO.Directory.CreateDirectory(binpath);

        lock (Locker)
        {
          using (var file = System.IO.File.Create(binpath + filename))
          {
            ProtoBuf.Serializer.Serialize<T>(file, model);
            return true;
          }
        }
      }
      catch
      {
        return false;
      }
    }

    public static T ProtoBufDeserialize<T>(string filename) where T : class
    {
      var dbpath = Config.KeyCenter.KeyBaseDirectory + @"Config\" + filename;

      if (System.IO.File.Exists(dbpath))
      {
        lock (Locker)
        {
          using (var file = System.IO.File.OpenRead(dbpath))
          {
            var result = ProtoBuf.Serializer.Deserialize<T>(file);
            return result;
          }
        }
      }

      return default(T);
    }
  }
}/// <summary>
    /// 序列化
    /// </summary>
    public static string Serialize<T>(T t) where T : class
    {
      using (MemoryStream ms = new MemoryStream())
      {
        ProtoBuf.Serializer.Serialize<T>(ms, t);
        return Encoding.UTF8.GetString(ms.ToArray());
      }
    }
    /// <summary>
    /// 反序列化
    /// </summary>
    public static T DeSerialize<T>(string content) where T : class
    {
      using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(content)))
      {
        T t = ProtoBuf.Serializer.Deserialize<T>(ms);
        return t;
      }
    }

以上這篇protobuf對象二進(jìn)制序列化存儲(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

三门县| 防城港市| 弥勒县| 视频| 景洪市| 通许县| 吴旗县| 鄂尔多斯市| 苏尼特右旗| 连州市| 泽普县| 历史| 隆安县| 淳化县| 土默特右旗| 顺义区| 西盟| 富蕴县| 麻栗坡县| 察雅县| 大方县| 洪雅县| 广宁县| 五大连池市| 禹城市| 巴彦淖尔市| 交口县| 东乌| 徐闻县| 赤城县| 高要市| 张家港市| 勃利县| 霍城县| 吉首市| 股票| 盱眙县| 江永县| 中西区| 福鼎市| 大理市|