diff --git a/MLEM.Data/DynamicEnum.cs b/MLEM.Data/DynamicEnum.cs index 17db45b..b3e7033 100644 --- a/MLEM.Data/DynamicEnum.cs +++ b/MLEM.Data/DynamicEnum.cs @@ -3,7 +3,9 @@ using System.Collections.Generic; using System.Linq; using System.Numerics; using System.Reflection; +using MLEM.Data.Json; using MLEM.Misc; +using Newtonsoft.Json; namespace MLEM.Data { /// @@ -23,6 +25,7 @@ namespace MLEM.Data { /// public static MyEnum operator ~(MyEnum value) => Neg(value); /// /// + [JsonConverter(typeof(DynamicEnumConverter))] public abstract class DynamicEnum : GenericDataHolder { private static readonly Dictionary> Values = new Dictionary>(); diff --git a/MLEM.Data/Json/DynamicEnumConverter.cs b/MLEM.Data/Json/DynamicEnumConverter.cs new file mode 100644 index 0000000..01f2d21 --- /dev/null +++ b/MLEM.Data/Json/DynamicEnumConverter.cs @@ -0,0 +1,19 @@ +using System; +using Newtonsoft.Json; + +namespace MLEM.Data.Json { + /// + public class DynamicEnumConverter : JsonConverter { + + /// + public override void WriteJson(JsonWriter writer, DynamicEnum value, JsonSerializer serializer) { + writer.WriteValue(value.ToString()); + } + + /// + public override DynamicEnum ReadJson(JsonReader reader, Type objectType, DynamicEnum existingValue, bool hasExistingValue, JsonSerializer serializer) { + return DynamicEnum.Parse(objectType, reader.Value.ToString()); + } + + } +} \ No newline at end of file diff --git a/MLEM.Data/MLEM.Data.csproj b/MLEM.Data/MLEM.Data.csproj index 9af798f..035fdc8 100644 --- a/MLEM.Data/MLEM.Data.csproj +++ b/MLEM.Data/MLEM.Data.csproj @@ -30,6 +30,6 @@ - + \ No newline at end of file