iは、カスタム属性、のようなものを持つ列挙型を持っている:カスタム属性を逆に解決するにはどうすればよいですか?
public enum EnumStatus
{
[CharValue('*')]
Empty,
[CharValue('A')]
value1,
[CharValue('P')]
value2,
}
「フォワード」の方法は 反射、GetCustomAttributes、そのようなを使用してカスタム属性を取得列挙値に来て、簡単なようです。
しかし、私は逆解決のいくつかの種類が欲しいです。 char値を持っている、私は動作する列挙値を持っていると思います。以下のような
何か:
public static Enum GetEnumValue(this Enum source, char value)
{...}
iの値パラメータとして 'A' を置けば、EnumStatus.value1を返す必要があります。
私はエスケープを延期して、余分なハッシュテーブルを作成したくありません。
ありがとうございます!
はどうもありがとうございました! 「デフォルト」の記述属性はすでに使用されています。したがって私は別の方法が必要です。しかし、おそらく私はその例を使用することができます。それは一般的である必要はありませんが、私は "一般的な"属性が必要です。 –
例から私はここにこれを作った: パブリック静的T GetEnum(char値) {VARタイプ= typeof演算(T)。 CharValueAttributeとして (type.IsEnum) {foreachの(type.GetFieldsにおけるVARフィールド())場合 {var属性= Attribute.GetCustomAttribute(フィールド、 typeof演算(CharValueAttribute))。 if(属性!= null) { if(attribute.Value == value) return(T)field.GetValue(null); } } } return default(T); } –