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>();
    }
    }
  • 相关阅读:
    筛选法 || POJ 1356 Prime Land
    搜索 || BFS || POJ 3278 Catch That Cow
    (素数筛) 找质数
    (map)后缀字符串
    字符串的进制
    (二进制枚举子集)买玩具
    (基础)01背包问题
    (基础)编辑距离
    (基础)最长公共字串
    最大子矩阵和
  • 原文地址:https://www.cnblogs.com/jecob/p/4137589.html
Copyright © 2011-2022 走看看