欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2017年02月15日 10:49:59   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇protobuf對(duì)象二進(jìn)制序列化存儲(chǔ)(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

首先下載protobuf庫(kù),可以用Nuget。

demo:

using System;

namespace Tools
{
  public class BufHelp
  {
    /// <summary>
    /// 對(duì)象鎖
    /// </summary>
    private readonly static Object Locker = new Object();
    ///// <summary>
    ///// 讀寫(xiě)分離鎖
    ///// </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對(duì)象二進(jìn)制序列化存儲(chǔ)(詳解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#形狀原點(diǎn)變換的方法

    C#形狀原點(diǎn)變換的方法

    這篇文章主要介紹了C#形狀原點(diǎn)變換的方法,涉及C#圖形繪制中原點(diǎn)變換的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • c# 獲取網(wǎng)頁(yè)中指定的字符串信息的實(shí)例代碼

    c# 獲取網(wǎng)頁(yè)中指定的字符串信息的實(shí)例代碼

    c# 獲取網(wǎng)頁(yè)中指定的字符串信息的實(shí)例代碼,需要的朋友可以參考一下
    2013-04-04
  • C#中實(shí)現(xiàn)契約測(cè)試的方法

    C#中實(shí)現(xiàn)契約測(cè)試的方法

    這篇文章主要介紹了C#中實(shí)現(xiàn)契約測(cè)試,在本文中,我將揭開(kāi)契約測(cè)試的神秘面紗,并向您展示如何在 C# 項(xiàng)目中實(shí)現(xiàn)它,需要的朋友可以參考下
    2023-09-09
  • C# 常用不同日志庫(kù)的區(qū)別與示例解析

    C# 常用不同日志庫(kù)的區(qū)別與示例解析

    C# 作為一種流行的編程語(yǔ)言,有許多優(yōu)秀的日志庫(kù)可供選擇,本文將介紹一些常見(jiàn)的 C# 日志庫(kù),包括 NLog、log4net、Serilog 和 Microsoft.Extensions.Logging,并通過(guò)示例展示它們的使用方法及區(qū)別,感興趣的朋友一起看看吧
    2024-06-06
  • C#利用waveIn實(shí)現(xiàn)聲音采集

    C#利用waveIn實(shí)現(xiàn)聲音采集

    wimm這種基于win32 api的庫(kù),完全可以直接用C#去調(diào)用,將依賴減少到最小,所以本文小編就來(lái)和大家介紹一下C#如何使用waveIn實(shí)現(xiàn)聲音采集,感興趣的小伙伴可以了解下
    2023-10-10
  • C#中的lock()如何使用

    C#中的lock()如何使用

    在C#中,lock?關(guān)鍵字用于確保某個(gè)代碼塊在任何時(shí)刻只被一個(gè)線程訪問(wèn),本文主要介紹了C#中的lock()如何使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • C#中實(shí)現(xiàn)Fluent Interface的三種方法

    C#中實(shí)現(xiàn)Fluent Interface的三種方法

    這篇文章主要介紹了C#中實(shí)現(xiàn)Fluent Interface的三種方法,本文講解了Fluent Interface的簡(jiǎn)單實(shí)現(xiàn)、使用裝飾器模式和擴(kuò)展方法實(shí)現(xiàn)Fluent Interface等3種實(shí)現(xiàn)方法,需要的朋友可以參考下
    2015-03-03
  • 獲取字符串中的漢字拼音首字母

    獲取字符串中的漢字拼音首字母

    獲取字符串中的漢字拼音首字母...
    2007-03-03
  • C#中靜態(tài)的深入理解

    C#中靜態(tài)的深入理解

    這篇文章詳細(xì)的介紹了C#中的靜態(tài),有需要的朋友可以參考一下
    2013-09-09
  • C#使用后臺(tái)線程BackgroundWorker處理任務(wù)的總結(jié)

    C#使用后臺(tái)線程BackgroundWorker處理任務(wù)的總結(jié)

    這篇文章主要介紹了C#使用后臺(tái)線程BackgroundWorker處理任務(wù)的總結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07

最新評(píng)論