コード例 #1
0
 public StructConverter(JsonConverterWrite <T> serializer, JsonConverterRead <T> deserializer)
 {
     _serializer   = serializer.ThrowIfNull(nameof(serializer));
     _deserializer = deserializer.ThrowIfNull(nameof(deserializer));
 }
コード例 #2
0
        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));
            }));
        }