public StructConverter(JsonConverterWrite <T> serializer, JsonConverterRead <T> deserializer) { _serializer = serializer.ThrowIfNull(nameof(serializer)); _deserializer = deserializer.ThrowIfNull(nameof(deserializer)); }
public static void AddStructConverter <T>(this JsonSerializerOptions settings, JsonConverterWrite <T> serializer, JsonConverterRead <T> deserializer) where T : struct { var converters = settings?.Converters.NotNull(nameof(settings)); converters.Add(new StructConverter <T>(serializer, deserializer)); converters.Add(new StructConverter <T?>((writer, value) => { if (value.HasValue) { serializer(writer, value.Value); } else { writer.WriteNullValue(); } }, (ref Utf8JsonReader reader) => { if (reader.TokenType == JsonTokenType.Null) { return(null); } return(deserializer(ref reader)); })); }