C# Explication détaillée du code graphique pour obtenir le texte correspondant à partir de la valeur d'énumération

黄舟
Libérer: 2017-03-28 11:42:03
original
1921 Les gens l'ont consulté

Cet article présente principalement les informations pertinentes sur C# obtenant la description textuelle correspondante à partir de la valeur d'énumération. Les amis dans le besoin peuvent se référer à

C# à partir de la valeur d'énumération Explication détaillée. d'obtenir la description textuelle correspondante

Parfois, lorsqu'une valeur d'énumération est affichée, il est nécessaire d'afficher la chaîne de texte correspondant à la valeur d'énumération. Une solution consiste à utiliser switch ou if au lieu d'appel pour déterminer la valeur d'énumération, puis à l'attribuer à différentes chaînes de texte, mais de cette façon, s'il est utilisé à plusieurs endroits, il sera plus gênant. Bien sûr, certaines personnes disent que dans ce cas, vous pouvez encapsuler une méthode pour cette valeur d'énumération, puis l'appeler. Que se passe-t-il s’il existe plusieurs types d’énumération qui ont une telle exigence ? Existe-t-il une solution plus générale ? quelques.

Vous devez utiliser l'attribut Description ici, attribuer cet attribut à chaque valeur d'énumération, puis attribuer la chaîne de texte à décrire dans cet attribut. Par exemple,

#region YesNoEnum 
 public enum YesNoEnum 
 { 
   [Description("是")] 
   Yes, 
   [Description("否")] 
   No 
 } 
 #endregion
Copier après la connexion

Remarque : La description doit faire référence à l'aide de System.ComponentModel ;

Comment obtenir la valeur de cet attribut Description ? Nous pouvons utiliser la réflexion, le code est le suivant

public static class EnumUtil 
 { 
   #region FetchDescription 
   /// <summary> 
   /// 获取枚举值的描述文本 
   /// </summary> 
   /// <param name="value"></param> 
   /// <returns></returns> 
   public static string FetchDescription(this Enum value) 
   { 
     FieldInfo fi = value.GetType().GetField(value.ToString()); 
     DescriptionAttribute[] attributes = 
        (DescriptionAttribute[])fi.GetCustomAttributes( 
        typeof(DescriptionAttribute), false); 
     return (attributes.Length > 0) ? attributes[0].Description : value.ToString(); 
   } 
   #endregion 
 }
Copier après la connexion

Remarque : Bien que ce que nous écrivons ici soit une méthode statique , elle peut être appliquée à toutes les classes Enum. EnumUtil doit être une classe statique, et la méthode doit également être une méthode statique, et le premier paramètre doit être celui-ci, afin que la méthode puisse être étendue à la classe Enum pour s'appliquer à toutes les énumérations.

Ce qui suit est le code d'appel

YesNoEnum yesNoEnum = YesNoEnum.Yes; 
 string description = yesNoEnum.FetchDescription(); 
 Console.WriteLine(description);
Copier après la connexion

La capture d'écran de l'appel est la suivante



Comme vous pouvez le voir sur l'image, description récupère le texte de la description que nous avons spécifiée dans l'énumération. Dans le même temps, l'instance d'énumération de YesNoEnum ajoute une méthode d'extension FetchDescription.

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!

Étiquettes associées:
source:php.cn
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