using System.Text.Json;
using System.Text.Json.Serialization;

namespace Dpz.Core.Public.ViewModel.Converts;

/// <summary>
/// Represents the EnumConverter type.
/// </summary>
public class EnumConverter<T> : JsonConverter<T>
    where T : struct, Enum
{
    /// <summary>
    /// Executes Read.
    /// </summary>
    public override T Read(
        ref Utf8JsonReader reader,
        Type typeToConvert,
        JsonSerializerOptions options
    )
    {
        if (Enum.TryParse(reader.GetString(), out T value))
        {
            return value;
        }

        return default;
    }

    /// <summary>
    /// Executes Write.
    /// </summary>
    public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options)
    {
        writer.WriteStringValue(value.ToString());
    }
}
评论加载中...