いずれの場合も、列挙値は、列挙に関連付けられた説明プロパティに基づいて取得する必要があります。これを達成するための一般的なアプローチを見てみましょう。
列挙型の description プロパティを取得する拡張メソッドがある次の例を考えてみましょう:
<code>public static string GetDescription(this Enum value) { // 获取Description属性的实现 }</code>
このメソッドを使用すると、次のコードを呼び出して説明を取得できます:
<code>string myAnimal = Animal.GiantPanda.GetDescription(); // "Giant Panda"</code>
ここで、description 属性を対応する列挙値に変換する逆のプロセスを見てみましょう。この目的のために、ヘルパー メソッドを導入します。
<code>public static T GetValueFromDescription<T>(string description) where T : Enum { // 根据描述检索枚举值的实现 }</code>
このメソッドでは、列挙型のフィールドを反復処理し、リフレクションを使用してそのDescriptionAttributesを取得します。
<code>foreach (var field in typeof(T).GetFields()) { // 检查DescriptionAttribute并与提供的描述匹配的逻辑 }</code>
一致する descriptionAttribute が見つからない場合は、フィールド名をフォールバック メカニズムとして使用できます。最後に、結果を目的の列挙型にキャストします:
<code>return (T)field.GetValue(null);</code>
このメソッドを使用するには、列挙型と説明プロパティを指定するだけです:
<code>var panda = EnumEx.GetValueFromDescription<Animal>("Giant Panda");</code>
以上がEnum の説明を Enum 値に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。