Maison > développement back-end > C++ > Comment reconvertir une description Enum en sa valeur Enum ?

Comment reconvertir une description Enum en sa valeur Enum ?

DDD
Libérer: 2025-01-21 21:37:10
original
672 Les gens l'ont consulté

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

Convertir la description de l'énumération en valeur de l'énumération

Dans chaque cas, la valeur de l'énumération doit être récupérée en fonction des propriétés de description associées à l'énumération. Explorons une approche générale pour y parvenir.

Considérons l'exemple suivant où nous avons une méthode d'extension pour obtenir la propriété description d'une énumération :

<code>public static string GetDescription(this Enum value)
{
    // 获取Description属性的实现
}</code>
Copier après la connexion

En utilisant cette méthode, nous pouvons obtenir la description en appelant le code suivant :

<code>string myAnimal = Animal.GiantPanda.GetDescription(); // "Giant Panda"</code>
Copier après la connexion

Plongeons maintenant dans le processus inverse de conversion d’un attribut de description en sa valeur d’énumération correspondante. A cet effet, nous introduisons une méthode d'assistance :

<code>public static T GetValueFromDescription<T>(string description) where T : Enum
{
    // 根据描述检索枚举值的实现
}</code>
Copier après la connexion

Dans cette méthode, nous parcourons les champs de type énumération et utilisons la réflexion pour récupérer leurs DescriptionAttributes :

<code>foreach (var field in typeof(T).GetFields())
{
    // 检查DescriptionAttribute并与提供的描述匹配的逻辑
}</code>
Copier après la connexion

Nous pouvons utiliser le nom du champ comme mécanisme de secours si aucun DescriptionAttribute correspondant n'est trouvé. Enfin, nous convertissons le résultat dans le type d'énumération souhaité :

<code>return (T)field.GetValue(null);</code>
Copier après la connexion

Pour utiliser cette méthode, précisez simplement le type d'énumération et les propriétés de description :

<code>var panda = EnumEx.GetValueFromDescription<Animal>("Giant Panda");</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal