Использовать символ Dash (-) в параметре enum

public enum TimeFormat
{ 
        @12-hour,
        @24-hour
}

Привет,

Я использую десериализатор newtonsoft для десериализации json-строки для объекта.

JsonDeserializer проверяет имя параметра перечисления. если это то же самое с json-строкой. он преобразует строку в перечисление.

Могу ли я использовать символ Dash, Minus (-) в enum как параметр enum. Я пытался использовать, как указано выше, но я не мог скомпилировать проект.

Тогда я попробовал это.

[JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
public enum TimeFormat
{
    [JsonProperty("12-hour")]
    hour12,
    [JsonProperty("24-hour")]
    hour24,

}

Deserializer не может десериализовать строку json.

Ошибка: запрошенное значение '12-hour 'не было foun

Ответ 1

Я исправил проблему.

[JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]    
public enum TimeFormat
{
    [System.Runtime.Serialization.EnumMember(Value = "12-hour")]
    hour12,
    [System.Runtime.Serialization.EnumMember(Value = "24-hour")]
    hour24,

}

StringEnumConverter проверяет EnumMemberAttribute.