public CultureInfo Deserialize(ref MessagePackReader reader, IFormatterResolver formatterResolver)
        {
            if (reader.IsNil())
            {
                return(CultureInfo.InvariantCulture);
            }

            return(new CultureInfo(MessagePackBinary.ResolveString(reader.ReadUtf8Span())));
        }
Example #2
0
        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));
        }