欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# 從枚舉值獲取對(duì)應(yīng)的文本描述詳解

 更新時(shí)間:2017年01月21日 16:42:07   投稿:lqh  
這篇文章主要介紹了C# 從枚舉值獲取對(duì)應(yīng)的文本描述詳解的相關(guān)資料,需要的朋友可以參考下

C# 從枚舉值獲取對(duì)應(yīng)的文本描述詳解

有時(shí)枚舉值在顯示時(shí),需要顯示枚舉值對(duì)應(yīng)的文本串。一種方案是在調(diào)用的地方使用switch或者if來判斷枚舉值,然后賦給不同的文本串,但這樣一來,如果有較多的地方都用到的時(shí)候就會(huì)比較麻煩。當(dāng)然有人說,這種情況下,可以針對(duì)這種枚舉值封裝一個(gè)方法,然后來調(diào)用。那如果有多個(gè)枚舉類型都有這樣的需求呢?有沒有什么比較通用的解決辦法?有的。

這里需要用到Description屬性,給每個(gè)枚舉值都賦上一個(gè)該屬性,然后在該屬性中賦上要描述的文本串。比如

#region YesNoEnum 
 public enum YesNoEnum 
 { 
   [Description("是")] 
   Yes, 
   [Description("否")] 
   No 
 } 
 #endregion 

注:Desscription需要引用using System.ComponentModel;

那要如何獲取這個(gè)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 
 } 

注:我們這里寫的雖然是靜態(tài)方法,但是可以適用于所有的Enum類。EnumUtil必須是靜態(tài)類,而方法也必須是靜態(tài)方法,同時(shí)第一個(gè)參數(shù)必須是this的,這樣才能將方法擴(kuò)展到Enum類中,以適用到所有的枚舉中。

下面是調(diào)用代碼

YesNoEnum yesNoEnum = YesNoEnum.Yes; 
 string description = yesNoEnum.FetchDescription(); 
 Console.WriteLine(description); 

調(diào)用的截圖如下



從圖中可以看到description得到了我們?cè)诿杜e中指定的Description的文本。同時(shí)YesNoEnum的枚舉實(shí)例增加了擴(kuò)展方法FetchDescription.

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

相關(guān)文章

  • .net實(shí)現(xiàn)文件讀寫的幾種常用方法

    .net實(shí)現(xiàn)文件讀寫的幾種常用方法

    這篇文章主要介紹了.net實(shí)現(xiàn)文件讀寫的幾種常用方法,非常實(shí)用,需要的朋友可以參考下
    2014-08-08
  • C#使用listView增刪操作實(shí)例

    C#使用listView增刪操作實(shí)例

    這篇文章主要介紹了C#使用listView增刪操作的實(shí)現(xiàn)方法,實(shí)例分析了C#中使用listView控件進(jìn)行動(dòng)態(tài)添加、選中刪除等操作的技巧,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12
  • Unity實(shí)現(xiàn)大轉(zhuǎn)盤的簡單筆記

    Unity實(shí)現(xiàn)大轉(zhuǎn)盤的簡單筆記

    這篇文章主要為大家分享了Unity實(shí)現(xiàn)大轉(zhuǎn)盤的簡單筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C#基礎(chǔ)語法:可空類型詳解

    C#基礎(chǔ)語法:可空類型詳解

    這篇文章主要介紹了C#基礎(chǔ)語法:可空類型詳解,本文分析了可空類型的源碼、研究了可空類型強(qiáng)制轉(zhuǎn)換為常規(guī)類型、可空類型的運(yùn)算等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • C#中this用法系列(二) 通過this修飾符為原始類型擴(kuò)展方法

    C#中this用法系列(二) 通過this修飾符為原始類型擴(kuò)展方法

    定義一個(gè)靜態(tài)類,類中定義靜態(tài)方法,方法中參數(shù)類型前邊加上this修飾符,即可實(shí)現(xiàn)對(duì)參數(shù)類型的方法擴(kuò)展,下面通過實(shí)例代碼給大家介紹下,需要的朋友參考下吧
    2016-12-12
  • C#使用虛擬方法實(shí)現(xiàn)多態(tài)

    C#使用虛擬方法實(shí)現(xiàn)多態(tài)

    這篇文章主要介紹了C#使用虛擬方法實(shí)現(xiàn)多態(tài),涉及C#多態(tài)的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-05-05
  • C#中重載相等(==)運(yùn)算符示例

    C#中重載相等(==)運(yùn)算符示例

    這篇文章主要介紹了C#中重載相等(==)運(yùn)算符示例,運(yùn)算符重載一直是一個(gè)很詭異事情,本文通過實(shí)例探討由運(yùn)算符重載引出的一個(gè)問題,需要的朋友可以參考下
    2015-06-06
  • C#中parallel.foreach實(shí)現(xiàn)多線程處理

    C#中parallel.foreach實(shí)現(xiàn)多線程處理

    Parallel.ForEach方法是C#中的一個(gè)并行循環(huán)方法,它可以并行地對(duì)一個(gè)集合進(jìn)行迭代操作,本文主要介紹了C#中parallel.foreach實(shí)現(xiàn)多線程處理,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • C#引用類型轉(zhuǎn)換的常見方式總結(jié)

    C#引用類型轉(zhuǎn)換的常見方式總結(jié)

    這篇文章主要介紹了C#引用類型轉(zhuǎn)換的常見方式,包括子類轉(zhuǎn)換成父類,父類轉(zhuǎn)換成子類,以及不是子父級(jí)關(guān)系類之間的轉(zhuǎn)換,需要的朋友可以參考下
    2014-09-09
  • C#中Trim()、TrimStart()、TrimEnd()的用法介紹

    C#中Trim()、TrimStart()、TrimEnd()的用法介紹

    這篇文章主要介紹了C#中Trim()、TrimStart()、TrimEnd()的用法,有需要的朋友可以參考一下
    2014-01-01

最新評(píng)論