IListConverterFactory.cs 1014 B

1234567891011121314151617181920212223242526272829303132333435
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text.Json;
  4. using System.Text.Json.Serialization;
  5. namespace Quadarax.Foundation.Core.Json
  6. {
  7. public class IListInterfaceConverterFactory : JsonConverterFactory
  8. {
  9. public IListInterfaceConverterFactory(Type interfaceType)
  10. {
  11. this.InterfaceType = interfaceType;
  12. }
  13. public Type InterfaceType { get; }
  14. public override bool CanConvert(Type typeToConvert)
  15. {
  16. if (typeToConvert == typeof(IList<>).MakeGenericType(this.InterfaceType)
  17. && typeToConvert.GenericTypeArguments[0] == this.InterfaceType)
  18. {
  19. return true;
  20. }
  21. return false;
  22. }
  23. public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options)
  24. {
  25. return (JsonConverter)Activator.CreateInstance(
  26. typeof(ListConverter<>).MakeGenericType(this.InterfaceType));
  27. }
  28. }
  29. }