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
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 }
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);
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!