2016-10-27 2 views
0

код здесь:Protobuf-сеть Deserialize не работает

 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-сеть не может Deserialize что Serialized. это действительно странная вещь

ответ

0

Вам нужно перемотать поток в начале сбросив его Position, прежде чем вы можете прочитать из него:

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

Sample fiddle.

+0

Ваше предложение работает хорошо, спасибо. –

Смежные вопросы