forked from Mirror/Ryujinx
4ce4299ca2
* Use source generated json serializers in order to improve code trimming * Use strongly typed github releases model to fetch updates instead of raw Newtonsoft.Json parsing * Use separate model for LogEventArgs serialization * Make dynamic object formatter static. Fix string builder pooling. * Do not inherit json version of LogEventArgs from EventArgs * Fix extra space in object formatting * Write log json directly to stream instead of using buffer writer * Rebase fixes * Rebase fixes * Rebase fixes * Enforce block-scoped namespaces in the solution. Convert style for existing code * Apply suggestions from code review Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> * Rebase indent fix * Fix indent * Delete unnecessary json properties * Rebase fix * Remove overridden json property names as they are handled in the options * Apply suggestions from code review Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com> * Use default json options in github api calls * Indentation and spacing fixes --------- Co-authored-by: TSRBerry <20988865+TSRBerry@users.noreply.github.com>
34 lines
1.1 KiB
C#
34 lines
1.1 KiB
C#
#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());
|
|
}
|
|
}
|
|
}
|