mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 17:56:51 +13:00
Previous method of handling missing enum values was not reliable
This commit is contained in:
parent
e6ed90c09f
commit
85b64542ed
1 changed files with 11 additions and 1 deletions
|
@ -215,9 +215,10 @@ private static T LoadInternal(string filePath, string backupFolder = null)
|
||||||
using (JsonTextReader jsonReader = new JsonTextReader(streamReader))
|
using (JsonTextReader jsonReader = new JsonTextReader(streamReader))
|
||||||
{
|
{
|
||||||
JsonSerializer serializer = new JsonSerializer();
|
JsonSerializer serializer = new JsonSerializer();
|
||||||
serializer.Converters.Add(new SafeStringEnumConverter());
|
serializer.Converters.Add(new StringEnumConverter());
|
||||||
serializer.DateTimeZoneHandling = DateTimeZoneHandling.Local;
|
serializer.DateTimeZoneHandling = DateTimeZoneHandling.Local;
|
||||||
serializer.ObjectCreationHandling = ObjectCreationHandling.Replace;
|
serializer.ObjectCreationHandling = ObjectCreationHandling.Replace;
|
||||||
|
serializer.Error += Serializer_Error;
|
||||||
settings = serializer.Deserialize<T>(jsonReader);
|
settings = serializer.Deserialize<T>(jsonReader);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,5 +251,14 @@ private static T LoadInternal(string filePath, string backupFolder = null)
|
||||||
|
|
||||||
return new T();
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue