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>();
    }
    }
  • 相关阅读:
    ecshop首页最新评论的调用
    在ECSHOP商品列表页显示每个商品的评论等级和评论数量
    ecshop 系统信息在哪个页面
    ECSHOP去版权_ECSHOP2.7.2去版权方法最新方法
    ECShop 自定义函数以及调用
    ecshop 首页如何调用积分商城里面的的商品
    回到顶部的js代码
    ./flow.php (购物流程)
    C#把字符串转时间格式
    如何将服务端的多个文件打包下载(转)
  • 原文地址:https://www.cnblogs.com/jecob/p/4137589.html
Copyright © 2011-2022 走看看