无法通过MsgPack往返一个简单的对象

时间:2015-11-18 09:36:58

标签: c# msgpack

所以我试图使用MsgPack包(https://www.nuget.org/packages/MsgPack.Cli/)将一个简单的对象往返于我的文件。我可以打包的消息就好了,用二进制编辑器检查生成的对象表明数据是按照我的预期写的。但是,解压缩消息始终返回null。是否有人熟悉这个图书馆,可以解释出现了什么问题?

    public class Options
    {
        public string RecordLog { get; set; }
        public string ConfigFile { get; set; }
    }

    static void TestRoundTrip()
    {
        using (var fs = new FileStream("test.file", FileMode.OpenOrCreate, FileAccess.Write, FileShare.Read, 65535, true))
        {
            var packer = Packer.Create(fs, false);
            var options = new Options()
            {
                RecordLog = "log string",
                ConfigFile = "config string"
            };
            packer.Pack(options);
            packer.Dispose();
        }

        using (var fs = File.Open("test.file", FileMode.Open))
        {
            var unpacker = Unpacker.Create(fs, true);

            var opts = unpacker.Unpack<Options>();
            Console.WriteLine(opts.RecordLog);
            Console.WriteLine(opts.ConfigFile);
        }
    }

1 个答案:

答案 0 :(得分:0)

我通过在解压缩块中执行以下操作解决了这个问题:

compute-effective-method

事实证明, using (var fs = File.Open("test.file", FileMode.Open)) { var unpacker = Unpacker.Create(fs, true); unpacker.Read(); var opts = unpacker.Unpack<Options>(); Console.WriteLine(opts.RecordLog); Console.WriteLine(opts.ConfigFile); } 仅解包已在unpacker.Unpack<T>()调用中读取的消息。我只能通过阅读来源来解决这个问题,幸运的是可以在网上找到。