Maison >développement back-end >C++ >Comment reconvertir une description Enum en sa valeur Enum ?
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>
En utilisant cette méthode, nous pouvons obtenir la description en appelant le code suivant :
<code>string myAnimal = Animal.GiantPanda.GetDescription(); // "Giant Panda"</code>
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>
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>
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>
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>
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!