基礎となる列挙型の値ES(他の回答に示されるように)、あなたは[EnumMember(Value = "Name")]
属性を使用して列挙バレスを飾ると名の文字列として別の数値を使用することができます。
[JsonConverter(typeof(StringEnumConverter))]
[DataContract]
public enum IdleDelayBreakMode
{
[EnumMember(Value = "100")]
Repeat,
[EnumMember(Value = "200")]
ShowNext
}
あなたはまた、いずれか追加してStringEnumConverter
を使用してシリアライズする必要があります。 [JsonConverter(typeof(StringEnumConverter))]
を列挙型に直接入力するか、this answerに従ってグローバルに適用します。
[Flags]
と同様に動作します。次の両方の値をシリアライズします。
[Flags]
[DataContract]
[JsonConverter(typeof(StringEnumConverter))]
public enum IdleDelayBreakModeFlags
{
[EnumMember(Value = "100")]
Repeat = (1 << 0),
[EnumMember(Value = "200")]
ShowNext = (1 << 1),
}
"100, 200"
を生成します。
これらの属性を追加すると、DataContractSerializer
とJson.NETはこれらの代替名文字列を使用します。データコントラクトシリアライザの動作に影響を与えたくない場合は、[DataContract]
を削除しますが、[EnumMember]
の属性は保持してください。
出典
2016-07-14 19:27:38
dbc
値を設定するだけですか? 'Repeat = 100'と' ShowNext = 200'があります。 – juharr
列挙型の定義方法とは異なる列挙型を直列化したいですか? –
JsonConverterを継承するクラスを作成し、この属性をenum [JsonConverter(typeof(MyConverter))]に適用する必要があります。 – Mangist