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>();
    }
    }
  • 相关阅读:
    unity,C#,游戏面试笔试真题
    鼠标实现物体的移动
    UnityScript基础
    CocosCreator上的游戏(调试)发布到微信小程序
    Unity之与Web的交互
    unity之Layer作用
    unity_数据结构(常见数据结构及适用场景)
    unity之初级工程师
    虚拟机中安装GHO文件配置说明
    windows下tomcat的安装配置
  • 原文地址:https://www.cnblogs.com/jecob/p/4137589.html
Copyright © 2011-2022 走看看