void DeserializeTo <TMode>(byte *bytes, int length, IDataWriter dataWriter, MessagePackFormatterOptions options) where TMode : struct { var deserializer = new MessagePackDeserializer <TMode>(this, bytes, length, MaxDepth, options); if (typeof(TMode) == typeof(MessagePackDeserializeModes.ReferenceMode)) { deserializer.InitReferences(); } switch (deserializer.GetToken()) { case MessagePackToken.Map: if (dataWriter is IDataWriter <string> objectWriter) { deserializer.InternalReadObject(objectWriter); } else { ((IAsDataWriter)dataWriter.As <string>()).InvokeTIn(new MessagePackDeserializer <TMode> .InternalWriteMapInvoker(deserializer, dataWriter)); } break; case MessagePackToken.Array: deserializer.InternalReadArray(dataWriter.As <int>()); break; default: dataWriter.Content = XConvert.Cast(deserializer.DirectRead(), dataWriter.ContentType); break; } }
object Deserialize <TMode>(byte *bytes, int length, Type type, MessagePackFormatterOptions options) where TMode : struct { var deserializer = new MessagePackDeserializer <TMode>(this, bytes, length, MaxDepth, options); if (typeof(TMode) == typeof(MessagePackDeserializeModes.ReferenceMode)) { deserializer.InitReferences(); } return(ValueInterface.GetInterface(type).Read(deserializer)); }
static T DeserializeObject <T, TMode>(byte *bytes, int length, MessagePackFormatterOptions options) where TMode : struct { var deserializer = new MessagePackDeserializer <TMode>(bytes, length, DefaultMaxDepth, options); if (typeof(TMode) == typeof(MessagePackDeserializeModes.ReferenceMode)) { deserializer.InitReferences(); } return(ValueInterface <T> .ReadValue(deserializer)); }