ProtoBuf的序列化和反序列化

xiaoxiao2021-02-28  64

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace KT.Common.ToolHelp {     public class ProtoBufHelp     {         /// <summary>         /// 序列化对象         /// </summary>         /// <typeparam name="T"></typeparam>         /// <param name="model"></param>         /// <returns></returns>         public static byte[] Serialize<T>(T model)         {             try             {                 //涉及格式转换,需要用到流,将二进制序列化到流中                 using (MemoryStream ms = new MemoryStream())                 {                     //使用ProtoBuf工具的序列化方法                     ProtoBuf.Serializer.Serialize<T>(ms, model);                     //定义二级制数组,保存序列化后的结果                     byte[] result = new byte[ms.Length];                     //将流的位置设为0,起始点                     ms.Position = 0;                     //将流中的内容读取到二进制数组中                     ms.Read(result, 0, result.Length);                     return result;                 }             }             catch (Exception ex)             {                 //LogUtils.InfoLog("序列化失败: " + ex.ToString());                 return null;             }         }         // 将收到的消息反序列化成对象         // < returns>The serialize.< /returns>         // < param name="msg">收到的消息.</param>         public static T DeSerialize<T>(byte[] msg)         {             T result = default(T);             try             {                 using (MemoryStream ms = new MemoryStream())                 {                     //将消息写入流中                     ms.Write(msg, 0, msg.Length);                     //将流的位置归0                     ms.Position = 0;                     //使用工具反序列化对象                     result = ProtoBuf.Serializer.Deserialize<T>(ms);                     return result;                 }             }             catch (Exception ex)             {                 //LogUtils.InfoLog("反序列化失败: " + ex.ToString());                 return result;             }         }

    }

    [ProtoContract]     public class ReportEmptyParkingDate     {         [ProtoMember(1)]         public string messageId { get; set; }         [ProtoMember(2)]         public string busCode { get; set; }         [ProtoMember(3)]         public string reqDate { get; set; }         [ProtoMember(4)]         public string ver { get; set; }         [ProtoMember(5)]         public string sign { get; set; }         [ProtoMember(6)]         public string parkCode { get; set; }         [ProtoMember(7)]         public int eptCarports { get; set; }         [ProtoMember(8)]         public int fixedRemain { get; set; }         [ProtoMember(9)]         public int leasedRemain { get; set; }         [ProtoMember(10)]         public int freeRemain { get; set; }         [ProtoMember(11)]         public int bookedRemain { get; set; }     }

}
转载请注明原文地址: https://www.6miu.com/read-34227.html

最新回复(0)