public CultureInfo Deserialize(ref MessagePackReader reader, IFormatterResolver formatterResolver) { if (reader.IsNil()) { return(CultureInfo.InvariantCulture); } return(new CultureInfo(MessagePackBinary.ResolveString(reader.ReadUtf8Span()))); }
public T Deserialize(ref MessagePackReader reader, IFormatterResolver formatterResolver) { var name = MessagePackBinary.ResolveString(reader.ReadUtf8Span()); if (!nameValueMapping.TryGetValue(name, out T value)) { value = (T)Enum.Parse(typeof(T), name); // Enum.Parse is too slow } return(value); }
public object Deserialize(ref MessagePackReader reader, IFormatterResolver formatterResolver) { var isTypeless = reader.IsTypelessFormat(out var isNil); if (isNil) { return(null); } if (isTypeless) { // it has type name serialized var typeName = reader.ReadUtf8Span(); var result = DeserializeByTypeName(typeName, ref reader, formatterResolver); return(result); } // fallback return(Resolvers.TypelessFormatterFallbackResolver.Instance.GetFormatter <object>().Deserialize(ref reader, formatterResolver)); }