【问题标题】:ProtoBuf-net Deserialize does not workProtoBuf-net 反序列化不起作用
【发布时间】:2016-10-28 10:12:47
【问题描述】:

代码在这里:

        var responseMsg = new ResponseMessage()
        {
            code = ErrorCode.OK,
            type = MsgType.LOGIN,
            responseStr = "this is local server"
        };
        var serverStream = new MemoryStream();
        ProtoBuf.Serializer.Serialize(serverStream, responseMsg);
        Console.WriteLine($"responseMsg {responseMsg?.responseStr ?? "failed"}\n");

        var response =ProtoBuf.Serializer.Deserialize<ResponseMessage>(serverStream);
        Console.WriteLine($"response {response?.responseStr ?? "failed"}\n");

结果是

responseMsg this is local server

response 

ProtoBuf-net 无法反序列化它所序列化的内容。这真是一件奇怪的事情

【问题讨论】:

    标签: serialization protobuf-net


    【解决方案1】:

    您需要通过重置其Position 将流倒回到开头,然后才能从中读取:

    serverStream.Position = 0;
    var response = ProtoBuf.Serializer.Deserialize<ResponseMessage>(serverStream);
    

    示例fiddle

    【讨论】:

      猜你喜欢
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 2022-12-14
      • 2013-12-02
      相关资源
      最近更新 更多