3
我想從我的枚舉中刪除一個枚舉值。但是,如果反序列化JSON,如果刪除枚舉值找到,那麼它應該選擇我所選擇的枚舉值,而不是默認爲None
,這是我的枚舉中的第一個值,用於向後兼容。在Json.NET中如何處理缺少的枚舉值來選擇另一個
例子:
public enum ExampleHotkeyType
{
None,
CaptureRegion,
CaptureRegionWindow,
CaptureRegionPolygon,
CaptureRegionFreehand
}
我想刪除此枚舉CaptureRegionWindow
和反序列化,如果CaptureRegionWindow
發現時,我希望它被分配到CaptureRegion
代替。這樣它不會默認爲None
。
我搜索也許我可以設置CaptureRegion
枚舉值有多個名稱作爲屬性,但無法找到這樣的事情。
什麼是最好的方式來處理這個問題,所以我的用戶設置不會重置?
注意:我在序列化/反序列化時使用了StringEnumConverter。
作爲一個通用的解決方案,我建議建立類似的屬性和.NET'EnumMember'這將接受多個值,然後用它在反序列化階段 - 這樣我們可以支持任意的枚舉。這是支持'EnumMember'屬性的轉換器。 https://gist.github.com/gubenkoved/999eb73e227b7063a67a50401578c3a7 –