JsonOmdbNotAvailableConverterFactory.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. using System;
  2. using System.Text.Json;
  3. using System.Text.Json.Serialization;
  4. namespace MediaBrowser.Common.Json.Converters
  5. {
  6. /// <summary>
  7. /// Json Omdb converter factory.
  8. /// </summary>
  9. /// <remarks>
  10. /// Remove when Omdb is moved to plugin.
  11. /// </remarks>
  12. public class JsonOmdbNotAvailableConverterFactory : JsonConverterFactory
  13. {
  14. /// <inheritdoc />
  15. public override bool CanConvert(Type typeToConvert)
  16. {
  17. return (typeToConvert.IsGenericType
  18. && typeToConvert.GetGenericTypeDefinition() == typeof(Nullable<>)
  19. && typeToConvert.GenericTypeArguments[0].IsValueType)
  20. || typeToConvert == typeof(string);
  21. }
  22. /// <inheritdoc />
  23. public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options)
  24. {
  25. if (typeToConvert == typeof(string))
  26. {
  27. return (JsonConverter)Activator.CreateInstance(typeof(JsonOmdbNotAvailableStringConverter));
  28. }
  29. var structType = typeToConvert.GenericTypeArguments[0];
  30. return (JsonConverter)Activator.CreateInstance(typeof(JsonOmdbNotAvailableStructConverter<>).MakeGenericType(structType));
  31. }
  32. }
  33. }