C#從枚舉值擷取對應文本的圖文代碼詳解

來源:互聯網
上載者:User
這篇文章主要介紹了C# 從枚舉值擷取對應的文本描述詳解的相關資料,需要的朋友可以參考下

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.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.