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

首頁 > 編程 > C# > 正文

C#如何給枚舉類型增加一個描述特性詳解

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

前言

相信很多人對枚舉并不陌生,枚舉可以很方便和直觀的管理一組特定值。如果我們在頁面上直接輸出我們希望匹配的漢語意思或則其他滿足我們需求的語句就更好了,當然,通常小伙伴們都會再頁面上if(enum==1) “我是一個枚舉”或者switch(enum)這種方式解決。

枚舉的優點:

<1>枚舉可以使代碼更易于維護,有助于確保給變量指定合法的、期望的值。

<2>枚舉使代碼更清晰,允許用描述性的名稱表示整數值,而不是用含義模糊的數來表示。

<3>枚舉使代碼更易于鍵入。在給枚舉類型的實例賦值時,VS.NET IDE會通過IntelliSense彈出一個包含可接受值的列表框,減少了按鍵次數,并能夠讓我們回憶起可能的值

那今天我們就來介紹一種更優雅的解決方法

開整

先定義一個枚舉類

  enum StatusEnum {  [Description("修改")]  Update = 1,  [Description("新增")]  Insert = 2,  [Description("刪除")]  Delete = 3 }

Description是屬性特性的意思。記住即可

大家要記住,所有的特性類必須繼承自 Attribute,所以,我們自定義一個特性類

/// <summary> /// 備注特性 /// </summary> public class RemarkAttribute : Attribute {  /// <summary>  /// 備注  /// </summary>  public string Remark { get; set; }  public RemarkAttribute(string remark)  {   this.Remark = remark;  } }

有了這個特性類之后呢,我們還需要一個枚舉擴展類

 /// <summary> /// 枚舉擴展類 /// </summary> public static class EnumExtension {  /// <summary>  /// 獲取枚舉的備注信息  /// </summary>  /// <param name="em"></param>  /// <returns></returns>  public static string GetRemark(this Enum value)  {   FieldInfo fi = value.GetType().GetField(value.ToString());   if (fi == null)   {    return value.ToString();   }   object[] attributes = fi.GetCustomAttributes(typeof(RemarkAttribute), false);   if (attributes.Length > 0)   {    return ((RemarkAttribute)attributes[0]).Remark;   }   else   {    return value.ToString();   }  }  public static string GetEnumDescription(this Enum value)  {   FieldInfo fi = value.GetType().GetField(value.ToString());   DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);   if (attributes.Length > 0)   {    return attributes[0].Description;   }   else   {    return value.ToString();   }  } }

需要引入命名空間:

using System.Collections.Generic;using System.ComponentModel;

有了這個枚舉擴展類,我們就可以直接使用了

 Console.WriteLine((int)StatusEnum.Insert);//輸出原有枚舉值 Console.WriteLine(StatusEnum.Insert.GetRemark());//獲取枚舉備注信息 Console.WriteLine(StatusEnum.Insert.GetEnumDescription());//獲取枚舉特性值

 

調試過程

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 确山县| 孝义市| 屯昌县| 公安县| 高唐县| 元氏县| 宁化县| 江川县| 贵溪市| 云龙县| 灵寿县| 礼泉县| 斗六市| 卓尼县| 福州市| 商河县| 呼伦贝尔市| 佳木斯市| 抚顺县| 石楼县| 崇义县| 临夏市| 忻州市| 荣昌县| 榆树市| 铜陵市| 洱源县| 山丹县| 顺义区| 扶余县| 峨山| 乌鲁木齐县| 上栗县| 海盐县| 九江市| 南投市| 河津市| 八宿县| 榆中县| 凤台县| 长乐市|