/// <inheritdoc />
    public override FluentValidationProblemDetails Read(
        ref Utf8JsonReader reader,
        Type typeToConvert,
        JsonSerializerOptions options
        )
    {
        var annotatedProblemDetails = JsonSerializer.Deserialize <AnnotatedProblemDetails>(ref reader, options);

        var problemDetails = new FluentValidationProblemDetails();

        annotatedProblemDetails?.CopyTo(problemDetails);
        return(problemDetails);
    }
Example #2
0
    internal static FluentValidationProblemDetails From(ValidationProblemDetails validationProblemDetails, ValidationResult validationResult)
    {
        var result = new FluentValidationProblemDetails(validationResult)
        {
            Detail   = validationProblemDetails.Detail,
            Instance = validationProblemDetails.Instance,
            Status   = validationProblemDetails.Status,
            Title    = validationProblemDetails.Title,
            Type     = validationProblemDetails.Type,
        };

        foreach (var ext in validationProblemDetails.Extensions)
        {
            result.Extensions.TryAdd(ext.Key, ext.Value);
        }

        return(result);
    }
#pragma warning disable CS8618

            /// <summary>
            /// Required for JSON.NET deserialization.
            /// </summary>
            public AnnotatedProblemDetails(FluentValidationProblemDetails problemDetails)
            {
                Detail   = problemDetails.Detail;
                Instance = problemDetails.Instance;
                Status   = problemDetails.Status;
                Title    = problemDetails.Title;
                Type     = problemDetails.Type;

                foreach (var kvp in problemDetails.Extensions)
                {
                    Extensions[kvp.Key] = kvp.Value;
                }

                Rules = problemDetails.Rules;
                foreach (var kvp in problemDetails.ValidationErrors)
                {
                    Errors[kvp.Key] = kvp.Value;
                }
            }
            public void CopyTo(FluentValidationProblemDetails problemDetails)
            {
                problemDetails.Type     = Type;
                problemDetails.Title    = Title;
                problemDetails.Status   = Status;
                problemDetails.Instance = Instance;
                problemDetails.Detail   = Detail;

                foreach (var(key, value) in Extensions)
                {
                    problemDetails.Extensions[key] = value;
                }

                Rules = problemDetails.Rules;
                foreach (var(key, value) in problemDetails.ValidationErrors)
                {
                    Errors[key] = value;
                }
            }