2013-04-06 12 views
3

我閱讀了msgpack-cli quick start文檔。我還得到了C#(CLI)NuGet包(v0.3)。如何在C#中使用MessagePack?

NuGet包(!!)中沒有任何類(例如BoxingPacker,CompiledPackerObjectPacker)在官方文檔中提到。我假設文檔已經成爲孤兒。

那麼有沒有人有例子如何序列化/反序列化/從MessagePack C#內?我試圖爲一個對象做這件事,並且對序列化器的二進制特性感興趣。

回答

7

未來的讀者:我用的Avro或Protocol Buffers的,甚至超過節儉基於MessagePack上these results去...

對於具體的緣故問題的關鍵部分是:

public byte[] Serialize<T>(T thisObj) 
{ 
    var serializer = MessagePackSerializer.Create<T>(); 

    using (var byteStream = new MemoryStream()) 
    { 
     serializer.Pack(byteStream, thisObj); 
     return byteStream.ToArray(); 
    } 
} 

public T Deserialize<T>(byte[] bytes) 
{ 
    var serializer = MessagePackSerializer.Create<T>(); 
    using (var byteStream = new MemoryStream(bytes)) 
    { 
     return serializer.Unpack(byteStream); 
    } 
} 

整個ř& d類型的項目,其結果是在https://github.com/sidshetye/SerializersCompare和第具體的函數調用是here

+0

另一個值得考慮的選擇:fastBinaryJSON(http://www.codeproject.com/Articles/345070/fastBinaryJSON) – 2014-12-17 04:21:19

-1

從NuGet安裝名爲MsgPack的軟件包。看到這裏的圖片:

enter image description here

0

在msgpack-cli的最新版本中,Create方法與MessagePackSerializer.Create<T>();中的標記爲過時。

用法示例作爲項目的github page可能會給出:

// Creates serializer. 
var serializer = SerializationContext.Default.GetSerializer<T>(); 
// Pack obj to stream. 
serializer.Pack(stream, obj); 
// Unpack from stream. 
var unpackedObject = serializer.Unpack(stream); 
0

我很驚訝,沒有人明白了什麼的用戶要求。 msgpack有很多nuget軟件包,它真的讓人困惑,哪一個使用以及如何包含在項目中。我假設用戶想知道如何在我的.net項目中包含msgpack。

Install MessagePack for CLI from Nuget packages 

然後包括像這樣

using MsgPack.Serialization;