Я пытаюсь обновить зависимости устаревшей кодовой базы, чтобы использовать protobuf-net 2.3.7 вместо protobuf-net 1.0
Следующий код используется для работы с версией 1 и печатает 2147483647
var stream = new MemoryStream();
Serializer.NonGeneric.SerializeWithLengthPrefix(stream, int.MaxValue, PrefixStyle.Base128, 1);
stream.Position = 0;
Serializer.NonGeneric.TryDeserializeWithLengthPrefix(stream, PrefixStyle.Base128, _ => typeof(int).MakeByRefType(), out var lastItem);
Console.WriteLine(lastItem);
Но тот же код не работает с protobuf-net 2.3.7 и выдает:
Необработанное исключение: System.InvalidOperationException: тип не является
ожидается, и никакой контракт не может быть выведен: System.Int32 & at
ProtoBuf.Meta.TypeModel.ThrowUnexpectedType (Type type) в
ProtoBuf.Meta.TypeModel.TryDeserializeAuxiliaryType (ProtoReader
читатель, формат DataFormat, тег Int32, тип типа, объект и значение,
Boolean skipOtherFields, Boolean asListItem, Boolean autoCreate,
Boolean insideList, Object parentListOrType) в
ProtoBuf.Meta.TypeModel.DeserializeWithLengthPrefix (Потоковый источник,
Значение объекта, тип Type, стиль PrefixStyle, Int32 Ожидаемое поле,
Распознаватель TypeResolver, Int64 & bytesRead, логический & haveObject,
Контекст SerializationContext) в
ProtoBuf.Serializer.NonGeneric.TryDeserializeWithLengthPrefix (Stream
источник, стиль PrefixStyle, распознаватель TypeResolver, объект и значение)
Хотя исключение имеет смысл, я пытаюсь найти способ заставить код работать с новой версией библиотеки без масштабного рефакторинга.
Есть предложения?
EDIT:
MemoryStream
содержит 8 байтов после сериализации:
new byte[] {10,6,8,255,255,255,255,7}
base64: CgYI/////wc=