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>();
    }
    }
  • 相关阅读:
    World Wind Java开发之三 显示状态栏信息
    hdu 5105 Math Problem(数学)
    内存寻址一(分段)
    Fedora20上Xen的安装与部署
    北京电子地图 谷歌-百度-高清-搜狗电子地图 地图14、17、19级图片
    win8.1休眠状态下不能进入系统
    IIC读写AT24C02代码2——串口命令控制多页读写
    ColorSchemer Studio 2 破解
    基于特定领域国土GIS应用框架设计及应用
    POJ 3614 Sunscreen 优先队列 贪心
  • 原文地址:https://www.cnblogs.com/jecob/p/4137589.html
Copyright © 2011-2022 走看看