EnumMember
次のようなJSON.NETのシリアル化を容易にするために注釈が付けられた列挙型があります。
[DataContract]
[JsonConverter(typeof(StringEnumConverter))]
public enum Status
{
[EnumMember(Value = "NOT_ADMITTED")]
NotAdmitted,
[EnumMember(Value = "ADMITTED")]
Admitted
}
ここで、JSON.NETのシリアル化とは関係なく、データコントラクトのアノテーションを順守しながら、列挙型のインスタンスを文字列に変換したいと思いますEnumMember
。例:
aStatusInstance.ToString() == "NOT_ADMITTED"
。
助言がありますか?ありがとう!
更新:私の解決策
受け入れられた回答のコードを変更して、EnumMember値を取得するための拡張メソッドを作成しました。
public static string GetEnumMemberValue(this Enum enumValue)
{
var type = enumValue.GetType();
var info = type.GetField(enumValue.ToString());
var da = (EnumMemberAttribute[])(info.GetCustomAttributes(typeof(EnumMemberAttribute), false));
if (da.Length > 0)
return da[0].Value;
else
return string.Empty;
}