国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C# 從枚舉值獲取對應的文本描述詳解

2020-01-24 00:49:53
字體:
來源:轉載
供稿:網友

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.

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 梁山县| 疏附县| 和顺县| 阿图什市| 乡城县| 申扎县| 林芝县| 商丘市| 麦盖提县| 广宗县| 淮北市| 寿光市| 米林县| 肃南| 恩平市| 霍城县| 普定县| 岢岚县| 大姚县| 安吉县| 裕民县| 历史| 古浪县| 乳源| 本溪市| 德化县| 永嘉县| 朝阳区| 新竹县| 古交市| 伊金霍洛旗| 金寨县| 兰州市| 泊头市| 郸城县| 南木林县| 桓仁| 镇宁| 汉川市| 克山县| 左云县|