| 12345678910111213141516171819202122232425262728293031323334 |
- #nullable enable
- using System;
- using System.Text.Json;
- using System.Text.Json.Serialization;
- namespace Ryujinx.Common.Utilities
- {
- /// <summary>
- /// Specifies that value of <see cref="TEnum"/> will be serialized as string in JSONs
- /// </summary>
- /// <remarks>
- /// Trimming friendly alternative to <see cref="JsonStringEnumConverter"/>.
- /// Get rid of this converter if dotnet supports similar functionality out of the box.
- /// </remarks>
- /// <typeparam name="TEnum">Type of enum to serialize</typeparam>
- public sealed class TypedStringEnumConverter<TEnum> : JsonConverter<TEnum> where TEnum : struct, Enum
- {
- public override TEnum Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
- {
- var enumValue = reader.GetString();
- if (string.IsNullOrEmpty(enumValue))
- {
- return default;
- }
- return Enum.Parse<TEnum>(enumValue);
- }
- public override void Write(Utf8JsonWriter writer, TEnum value, JsonSerializerOptions options)
- {
- writer.WriteStringValue(value.ToString());
- }
- }
- }
|