protobuffer .Netシーケンス化

8817 ワード

/// <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>();

}

}