如何在C#中使用MessagePack?

如何在C#中使用MessagePack?,c#,.net,serialization,messagepack,C#,.net,Serialization,Messagepack,我看了文件 我还得到了C#(CLI)NuGet包(v0.3) NuGet软件包中不存在正式文档中提到的任何类(例如BoxingPacker、CompiledPacker或ObjectPacker)。我想这些文件已经被孤立了 那么,有没有人能举例说明如何在C#中对MessagePack进行序列化/反序列化?我尝试对一个对象执行此操作,并且对序列化程序的二进制特性感兴趣。我在以下位置找到了一个示例: 我在代码中测试它,并通过zmq将Byte[]数据发送到另一台主机。 它可以工作。从NuGet安装名为

我看了文件

我还得到了C#(CLI)NuGet包(v0.3)

NuGet软件包中不存在正式文档中提到的任何类(例如
BoxingPacker
CompiledPacker
ObjectPacker
)。我想这些文件已经被孤立了

那么,有没有人能举例说明如何在C#中对MessagePack进行序列化/反序列化?我尝试对一个对象执行此操作,并且对序列化程序的二进制特性感兴趣。

我在以下位置找到了一个示例: 我在代码中测试它,并通过zmq将Byte[]数据发送到另一台主机。
它可以工作。

从NuGet安装名为MsgPack的包。如图所示:


对未来的读者:我会选择Avro或协议缓冲区,甚至是基于…

就具体问题而言,关键部分是:

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);
    }
}
public byte[]序列化(T thisObj)
{
var serializer=MessagePackSerializer.Create();
使用(var byteStream=newmemorystream())
{
serializer.Pack(byteStream,thisObj);
返回byteStream.ToArray();
}
}
公共T反序列化(字节[]字节)
{
var serializer=MessagePackSerializer.Create();
使用(var byteStream=新内存流(字节))
{
返回序列化程序。解包(ByTestStream);
}
}
整个R&D类型项目的结果为,具体的函数调用为。

Create
方法的最新版本中,如
MessagePackSerializer.Create()被标记为已过时

项目说明中给出的示例用法可能是:

//创建序列化程序。
var serializer=SerializationContext.Default.GetSerializer();
//将obj打包到流中。
serializer.Pack(流,obj);
//从流中解包。
var unpackeobject=serializer.Unpack(流);

我很惊讶,没有人理解用户的要求。msgpack有太多的nuget软件包,使用哪一个以及如何包含在项目中都很混乱。我假设用户想知道如何像我一样在.net项目中包括msgpack

Install MessagePack for CLI from Nuget packages
然后像这样包括

using MsgPack.Serialization;

另一个需要考虑的选项是:fastBinaryJSON()'MessagePackSerializer.Create()'已过时:“改用Get()。'这非常旧,需要更新。MessagePack吸烟。
using MsgPack.Serialization;