C# 从罗列值猎取对应的文本形貌详解
偶然罗列值在显现时,须要显现罗列值对应的文本串。一种计划是在挪用的处所运用switch或许if来推断罗列值,然后赋给差别的文本串,但如许一来,如果有较多的处所都用到的时刻就会比较贫苦。固然有人说,这类情况下,能够针对这类罗列值封装一个要领,然厥后挪用。那如果有多个罗列范例都有如许的需求呢?有无什么比较通用的解决办法?有的。
这里须要用到Description属性,给每一个罗列值都赋上一个该属性,然后在该属性中赋上要形貌的文本串。比方
#region YesNoEnum public enum YesNoEnum { [Description("是")] Yes, [Description("否")] No } #endregion
注:Desscription须要援用using System.ComponentModel;
那要怎样猎取这个Description属性的值呢?我们能够作用反射,代码以下
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 }
注:我们这里写的虽然是静态要领,然则能够适用于一切的Enum类。EnumUtil必需是静态类,而要领也必需是静态要领,同时第一个参数必需是this的,如许才能将要领扩大到Enum类中,以适用到一切的罗列中。
下面是挪用代码
YesNoEnum yesNoEnum = YesNoEnum.Yes; string description = yesNoEnum.FetchDescription(); Console.WriteLine(description);
挪用的截图以下
从图中能够看到description得到了我们在罗列中指定的Description的文本。同时YesNoEnum的罗列实例增加了扩大要领FetchDescription.
以上就是C#从罗列值猎取对应文本的图文代码详解的细致内容,更多请关注ki4网别的相干文章!