using System; using System.Reflection; using System.Text.Json; using System.Text.Json.Serialization; namespace MonoGame.Extended.Particles.Serialization; /// /// Converts a value to or from JSON. /// public class ModifierExecutionStrategyJsonConverter : JsonConverter { /// public override bool CanConvert(Type typeToConvert) => typeToConvert == typeof(ParticleModifierExecutionStrategy) || typeToConvert.GetTypeInfo().BaseType == typeof(ParticleModifierExecutionStrategy); /// public override ParticleModifierExecutionStrategy Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { var value = JsonSerializer.Deserialize(ref reader, options); return ParticleModifierExecutionStrategy.Parse(value); } /// /// /// Throw if is . /// public override void Write(Utf8JsonWriter writer, ParticleModifierExecutionStrategy value, JsonSerializerOptions options) { ArgumentNullException.ThrowIfNull(writer); writer.WriteStringValue(value.ToString()); } }