public object ReadBody(VoxBinaryReader reader) { var length = reader.ReadVariableInt(); reader.HandleEnterInnerBuffer(length); try { var key = thisIsTotesTheRealLegitThingReaderWriterThing.ReadThing(reader, userKeyType); var value = thisIsTotesTheRealLegitThingReaderWriterThing.ReadThing(reader, userValueType); return(Activator.CreateInstance(userKvpType, key, value)); } finally { reader.HandleLeaveInnerBuffer(); } }
public object ReadBody(VoxBinaryReader reader) { var dataLength = reader.ReadVariableInt(); reader.HandleEnterInnerBuffer(dataLength); try { var elementCount = reader.ReadVariableInt(); var elements = Array.CreateInstance(elementType, elementCount); for (var i = 0; i < elements.Length; i++) { var thing = thingReaderWriterDispatcherThing.ReadThing(reader, null); elements.SetValue(thing, i); } return(InternalRepresentationToHintTypeConverter.ConvertCollectionToHintType(elements, userCollectionType)); } finally { reader.HandleLeaveInnerBuffer(); } }
public object ReadBody(VoxBinaryReader reader) { var length = reader.ReadVariableInt(); reader.HandleEnterInnerBuffer(length); try { var slotCount = reader.ReadVariableInt(); var readerThing = new ReaderThing(thisIsTotesTheRealLegitThingReaderWriterThing, reader, slotCount); try { var subject = Activator.CreateInstance(typeof(TUserType)); userTypeSerializer.Deserialize(readerThing, (TUserType)subject); return(subject); } catch (Exception e) { logger.Error($"Failed to instantiate or deserialize instance of type {typeof(TUserType).Name}."); throw; } } finally { reader.HandleLeaveInnerBuffer(); } }