Previous method of handling missing enum values was not reliable

This commit is contained in:
Jaex 2019-08-25 05:27:35 +03:00
parent e6ed90c09f
commit 85b64542ed

View file

@ -215,9 +215,10 @@ private static T LoadInternal(string filePath, string backupFolder = null)
using (JsonTextReader jsonReader = new JsonTextReader(streamReader))
{
JsonSerializer serializer = new JsonSerializer();
serializer.Converters.Add(new SafeStringEnumConverter());
serializer.Converters.Add(new StringEnumConverter());
serializer.DateTimeZoneHandling = DateTimeZoneHandling.Local;
serializer.ObjectCreationHandling = ObjectCreationHandling.Replace;
serializer.Error += Serializer_Error;
settings = serializer.Deserialize<T>(jsonReader);
}
@ -250,5 +251,14 @@ private static T LoadInternal(string filePath, string backupFolder = null)
return new T();
}
private static void Serializer_Error(object sender, Newtonsoft.Json.Serialization.ErrorEventArgs e)
{
// Handle missing enum values
if (e.ErrorContext.Error.Message.StartsWith("Error converting value"))
{
e.ErrorContext.Handled = true;
}
}
}
}