zoukankan      html  css  js  c++  java
  • protobuffer .net 序列化

    /// <summary>
    /// protobuffer 序列化工具类
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class ProtoBufferUtil<T> where T : class
    {
    /// <summary>
    /// 对象序列化
    /// </summary>
    /// <param name="fromObj"></param>
    /// <returns></returns>
    public static byte[] SerializeToBinary(T fromObj)
    {
    byte[] result =new byte[0];
    using (MemoryStream stream = new System.IO.MemoryStream())
    {
    ProtoBuf.Serializer.Serialize<T>(stream, fromObj);
    result= stream.ToArray();
    stream.Close();
    }
    return result;
    }
    
    /// <summary>
    /// 对象序列化
    /// </summary>
    /// <param name="fromObj"></param>
    /// <returns></returns>
    public static string SerializeToString(T fromObj)
    {
    string result =string.Empty;
    using (MemoryStream stream = new System.IO.MemoryStream())
    {
    ProtoBuf.Serializer.Serialize<T>(stream, fromObj);
    result = System.Text.Encoding.UTF8.GetString(stream.ToArray());
    stream.Close();
    }
    return result;
    }
    
    /// <summary>
    /// 对象反序列化
    /// </summary>
    /// <param name="jsonStr"></param>
    /// <param name="settings"></param>
    /// <returns></returns>
    public static T DeserializeFromString(string jsonStr)
    {
    T result = default(T);
    if (!string.IsNullOrEmpty(jsonStr))
    {
    byte[] bt = System.Text.Encoding.UTF8.GetBytes(jsonStr);
    if (bt != null && bt.Length > 0)
    {
    using (MemoryStream stream = new System.IO.MemoryStream(bt))
    {
    result = ProtoBuf.Serializer.Deserialize<T>(stream);
    stream.Close();
    }
    }
    }
    return result;
    }
    
    /// <summary>
    /// 对象反序列化
    /// </summary>
    /// <param name="jsonStr"></param>
    /// <param name="settings"></param>
    /// <returns></returns>
    public static T DeserializeFromBinary(byte[] data)
    {
    T result = default(T);
    if (data != null && data.Length>0)
    {
    using (MemoryStream stream = new System.IO.MemoryStream(data,0,data.Length,false))
    {
    result = ProtoBuf.Serializer.Deserialize<T>(stream);
    stream.Close();
    }
    }
    return result;
    }
    
    /// <summary>
    /// 对象反序列化
    /// </summary>
    /// <param name="jsonStr"></param>
    /// <param name="settings"></param>
    /// <returns></returns>
    public static T DeserializeFromStream(Stream stream)
    {
    T result = default(T);
    if (stream != null)
    {
    result = ProtoBuf.Serializer.Deserialize<T>(stream);
    stream.Close();
    }
    return result;
    }
    
    /// <summary>
    /// 获取proto定义内容
    /// </summary>
    /// <returns></returns>
    public static string GetProto()
    {
    return ProtoBuf.Serializer.GetProto<T>();
    }
    }
  • 相关阅读:
    6.基础控件
    5.对话框组合
    4.对话框程序
    3. MFC原理介绍
    三星曲面显示器
    笔记本光驱接口怎么外接台式机硬盘?
    笔记本usb外接3.5寸sata台式机硬盘, 用mhdd检测不到,怎么处理?
    MHDD检测不到硬盘的解决办法
    MHDD检测电脑硬盘坏道
    一个指向指针函数的函数指针
  • 原文地址:https://www.cnblogs.com/jecob/p/4137589.html
Copyright © 2011-2022 走看看