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

首頁 > 編程 > C# > 正文

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

2019-10-29 21:15:31
字體:
來源:轉載
供稿:網友

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

調用的截圖如下

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

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

從圖中可以看到description得到了我們在枚舉中指定的Description的文本。同時YesNoEnum的枚舉實例增加了擴展方法FetchDescription.

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


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汪清县| 龙游县| 福建省| 游戏| 临西县| 汉沽区| 咸丰县| 江源县| 鹤峰县| 兴义市| 莫力| 镇江市| 凤庆县| 高陵县| 霍林郭勒市| 昭平县| 阿坝县| 阜新市| 石景山区| 北碚区| 大英县| 钟祥市| 甘洛县| 霍邱县| 高碑店市| 锡林郭勒盟| 喀喇沁旗| 萨嘎县| 奉化市| 正安县| 榆社县| 松滋市| 石楼县| 宁国市| 封开县| 武胜县| 咸丰县| 固安县| 凤庆县| 星子县| 花垣县|