diff options
| author | crobibero <cody@robibe.ro> | 2020-08-31 08:00:05 -0600 |
|---|---|---|
| committer | crobibero <cody@robibe.ro> | 2020-08-31 08:00:05 -0600 |
| commit | bd66fd25df772f3fd352fdda58e71474e255400a (patch) | |
| tree | a6102da6a9f120d7c887f460c5d603be92ea199f /MediaBrowser.Common/Json/Converters/JsonNonStringKeyDictionaryConverterFactory.cs | |
| parent | 9626101c9f8d0acceb2ecf97bed502c272d6e4f6 (diff) | |
| parent | 0424d09b8daf3626fd7de65b601e707afdb00599 (diff) | |
Merge remote-tracking branch 'upstream/master' into 3.1.7
Diffstat (limited to 'MediaBrowser.Common/Json/Converters/JsonNonStringKeyDictionaryConverterFactory.cs')
| -rw-r--r-- | MediaBrowser.Common/Json/Converters/JsonNonStringKeyDictionaryConverterFactory.cs | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/MediaBrowser.Common/Json/Converters/JsonNonStringKeyDictionaryConverterFactory.cs b/MediaBrowser.Common/Json/Converters/JsonNonStringKeyDictionaryConverterFactory.cs deleted file mode 100644 index 52f360740..000000000 --- a/MediaBrowser.Common/Json/Converters/JsonNonStringKeyDictionaryConverterFactory.cs +++ /dev/null @@ -1,59 +0,0 @@ -#nullable enable - -using System; -using System.Collections; -using System.Globalization; -using System.Reflection; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace MediaBrowser.Common.Json.Converters -{ - /// <summary> - /// https://github.com/dotnet/runtime/issues/30524#issuecomment-524619972. - /// TODO This can be removed when System.Text.Json supports Dictionaries with non-string keys. - /// </summary> - internal sealed class JsonNonStringKeyDictionaryConverterFactory : JsonConverterFactory - { - /// <summary> - /// Only convert objects that implement IDictionary and do not have string keys. - /// </summary> - /// <param name="typeToConvert">Type convert.</param> - /// <returns>Conversion ability.</returns> - public override bool CanConvert(Type typeToConvert) - { - if (!typeToConvert.IsGenericType) - { - return false; - } - - // Let built in converter handle string keys - if (typeToConvert.GenericTypeArguments[0] == typeof(string)) - { - return false; - } - - // Only support objects that implement IDictionary - return typeToConvert.GetInterface(nameof(IDictionary)) != null; - } - - /// <summary> - /// Create converter for generic dictionary type. - /// </summary> - /// <param name="typeToConvert">Type to convert.</param> - /// <param name="options">Json serializer options.</param> - /// <returns>JsonConverter for given type.</returns> - public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) - { - var converterType = typeof(JsonNonStringKeyDictionaryConverter<,>) - .MakeGenericType(typeToConvert.GenericTypeArguments[0], typeToConvert.GenericTypeArguments[1]); - var converter = (JsonConverter)Activator.CreateInstance( - converterType, - BindingFlags.Instance | BindingFlags.Public, - null, - null, - CultureInfo.CurrentCulture); - return converter; - } - } -} |
