Hier ist das Beispiel, das die Kompatibilität bricht. Ist es möglich, in Strings zu serialisieren und neue Enum-Mitglieder aus neueren Versionen zu ignorieren?Ist es möglich, ein neues enum-Mitglied hinzuzufügen und den Vertrag mit Newtonsoft json nicht zu brechen, wenn enum als Zeichenfolge seriviert wird?
[JsonConverter(typeof(StringEnumConverter))]
public enum FooEnumV1
{
OldMember,
OldMember2,
}
[JsonConverter(typeof(StringEnumConverter))]
public enum FooEnumV2
{
OldMember,
OldMember2,
NewMember
}
public class SeatPropertiesTests
{
[Test]
public void AddNewDataMember()
{
var properties = new List<FooEnumV2>()
{
FooEnumV2.OldMember,
FooEnumV2.OldMember2,
FooEnumV2.NewMember
};
var serialized = JsonConvert.SerializeObject(properties);
var deserialized = JsonConvert.DeserializeObject<List<FooEnumV1>>(serialized);
Assert.NotNull(deserialized);
}
}