ホームページ >バックエンド開発 >C++ >Enum の説明を Enum 値に変換するにはどうすればよいですか?

Enum の説明を Enum 値に変換するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-21 21:37:10611ブラウズ

How to Convert an Enum Description Back to its Enum Value?

列挙型の説明を列挙型の値に変換します

いずれの場合も、列挙値は、列挙に関連付けられた説明プロパティに基づいて取得する必要があります。これを達成するための一般的なアプローチを見てみましょう。

列挙型の 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。