Я пытаюсь десериализовать ответное сообщение из моей базы данных в формате protobuf.Он имеет следующую схему:
syntax = "proto3";
message Person {
uint64 id = 1;
string name = 2;
string surname = 3;
uint32 age = 4;
};
, и я создал этот класс для его десериализации:
[ProtoContract]
public class Person
{
[ProtoMember(1)]
public long Id { get; set; }
[ProtoMember(2)]
public string Name { get; set; }
[ProtoMember(3)]
public string Surname { get; set; }
[ProtoMember(4)]
public int Age { get; set; }
}
Далее я попытался сделать это:
var response = await client.PostAsync("", new StringContent(request));
using (var responseStream = await response.Content.ReadAsStreamAsync())
{
var person = Serializer.Deserialize<Person>(responseStream);
}
НоЯ перехватил ProtoBuf.ProtoException: Invalid wire-type;
.
Затем я решил посмотреть в байтовом массиве:
{25, 8, 1, 18, 6, 82, 111, 98, 101, 114, 116, 26, 11, 79, 112, 112, 101, 110, 104, 101, 105, 109, 101, 114, 32, 38 }
И я вручную создал запись, которая должна быть возвращена моей базой данных, и сериализовал ее:
{8, 1, 18, 6, 82, 111, 98, 101, 114, 116, 26, 11, 79, 112, 112, 101, 110, 104, 101, 105, 109, 101, 114, 32, 38 }
Как видите, они почти одинаковы, но моя БД отправляет 25
в начале.
Не могли бы вы мне помочь, в чем может быть ошибка?Спасибо!