Exemple #1
0
        public override object Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            var newOptions = new JsonSerializerOptions(options);

            newOptions.Converters.Remove(this);
            newOptions.Converters.Add(_innerJsonStringEnumConverter.CreateConverter(typeToConvert, newOptions));
            return(JsonSerializer.Deserialize(ref reader, typeToConvert, newOptions));
        }
Exemple #2
0
    public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        var newOptions = JsonSerializerOptionsHelper.Create(options, x =>
                                                            x == this ||
                                                            x.GetType() == typeof(AbpStringToEnumFactory));

        newOptions.Converters.Add(_innerJsonStringEnumConverter.CreateConverter(typeToConvert, newOptions));
        return(JsonSerializer.Deserialize <T>(ref reader, newOptions));
    }
Exemple #3
0
            public EnumNamingPolicyCache(JsonNamingPolicy?defaultWriteNamingPolicy, bool allowIntegerValues)
            {
                var enumType      = typeof(T);
                var enumNameCache = new EnumNameCache(enumType, defaultWriteNamingPolicy);

                ReadNamingPolicy = new EnumReadNamingPolicy(enumNameCache);

                var writeNamingPolicy           = new EnumWriteNamingPolicy(enumNameCache, defaultWriteNamingPolicy);
                var defaultJsonConverterFactory = new JsonStringEnumConverter(namingPolicy: writeNamingPolicy, allowIntegerValues: allowIntegerValues);

                DefaultJsonConverter = (JsonConverter <T>)defaultJsonConverterFactory.CreateConverter(typeToConvert: enumType, options: null);
            }
        public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options)
        {
            var query = from field in typeToConvert.GetFields(BindingFlags.Public | BindingFlags.Static)
                        let attr = field.GetCustomAttribute <EnumMemberAttribute>()
                                   where attr != null
                                   select(field.Name, attr.Value);

            var dictionary = query.ToDictionary(p => p.Name, p => p.Value);

            return(dictionary.Count > 0
                ? new JsonStringEnumConverter(new DictionaryLookupNamingPolicy(dictionary !, _namingPolicy), _allowIntegerValues)
                   .CreateConverter(typeToConvert, options)
                : _baseConverter.CreateConverter(typeToConvert, options));
        }
        /// <summary>
        /// If the enum has 'EnumValueAttribute' return the 'EnumValueJsonConverter',
        /// otherwise return the 'JsonStringEnumConverter'.
        /// </summary>
        /// <param name="typeToConvert"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options)
        {
            var values = Enum.GetValues(typeToConvert);

            foreach (var value in values)
            {
                var mi   = typeToConvert.GetMember(value.ToString());
                var evmi = mi.FirstOrDefault(m => m.DeclaringType == typeToConvert);
                var attr = evmi.GetCustomAttribute <EnumValueAttribute>();
                if (attr != null)
                {
                    return((JsonConverter)Activator.CreateInstance(typeof(EnumValueJsonConverter <>).MakeGenericType(typeToConvert)));
                }
            }
            return(_converter.CreateConverter(typeToConvert, options));
        }
        public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options)
        {
            var query = from field in typeToConvert.GetFields(BindingFlags.Public | BindingFlags.Static)
                        let attr = field.GetCustomAttribute <DescriptionAttribute>()
                                   where attr != null
                                   select(field.Name, attr.Description);

            var dictionary = query.ToDictionary(p => p.Item1, p => p.Item2);

            if (dictionary.Count > 0)
            {
                return(new JsonStringEnumConverter(new DictionaryLookupNamingPolicy(dictionary, namingPolicy), allowIntegerValues).CreateConverter(typeToConvert, options));
            }
            else
            {
                return(baseConverter.CreateConverter(typeToConvert, options));
            }
        }
Exemple #7
0
 /// <summary>
 /// Creates a new JSON converter
 /// </summary>
 /// <param name="typeToConvert">Type to convert</param>
 /// <param name="options">Conversion options</param>
 /// <returns>JSON converter</returns>
 public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options)
 {
     return(_converter.CreateConverter(typeToConvert, options));
 }
 public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options)
 => s_stringEnumConverter.CreateConverter(typeToConvert, options);
Exemple #9
0
        public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options)
        {
            var converterFactory = new JsonStringEnumConverter(new SnakeCaseNamingPolicy(), false);

            return(converterFactory.CreateConverter(typeToConvert, options));
        }