最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

通過特性(attribute)為枚舉添加更多信息示例

 更新時間:2014年01月22日 15:56:43   作者:  
這篇文章主要介紹了通過特性(Attribute)為枚舉添加更多的信息,大家參考使用吧

特性(Attribute)是將額外數據關聯到一個屬性(以及其他構造)的一種方式,而枚舉則是在編程中最常用的一種構造,枚舉本質上其實是一些常量值,相對于直接使用這些常量值,枚舉為我們提供了更好的可讀性。我們知道枚舉的基礎類型只能是值類型(byte、sbyte、short、ushort、int、uint、long 或 ulong),一般的情況下枚舉能夠滿足我們的需求,但是有時候我們需要為枚舉附加更多信息,僅僅只是使用這些值類型是不夠的,這時通過對枚舉類型應用特性可以使枚舉帶有更多的信息。

在枚舉中使用DescriptionAttribute特性

首先引入:using System.ComponentModel 命名空間,下面是一個枚舉應用了DescriptionAttribute特性:

復制代碼 代碼如下:

enum Fruit
{
    [Description("蘋果")]
    Apple,
    [Description("橙子")]
    Orange,
    [Description("西瓜")]
    Watermelon
}

下面是一個獲取Description特性的擴展方法:

復制代碼 代碼如下:

/// <summary>
/// 獲取枚舉描述特性值
/// </summary>
/// <typeparam name="TEnum"></typeparam>
/// <param name="enumerationValue">枚舉值</param>
/// <returns>枚舉值的描述/returns>
public static string GetDescription<TEnum>(this TEnum enumerationValue)
   where TEnum : struct, IComparable, IFormattable, IConvertible
{
   Type type = enumerationValue.GetType();
   if (!type.IsEnum)
   {
  throw new ArgumentException("EnumerationValue必須是一個枚舉值", "enumerationValue");
   }

   //使用反射獲取該枚舉的成員信息
   MemberInfo[] memberInfo = type.GetMember(enumerationValue.ToString());
   if (memberInfo != null && memberInfo.Length > 0)
   {
  object[] attrs = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);

  if (attrs != null && attrs.Length > 0)
  {
 //返回枚舉值得描述信息
 return ((DescriptionAttribute)attrs[0]).Description;
  }
   }
   //如果沒有描述特性的值,返回該枚舉值得字符串形式
   return enumerationValue.ToString();
}

最后,我們就可以利用該擴展方法獲取該枚舉值得描述信息了:

復制代碼 代碼如下:

public static void Main(string[] args)
{
//description = "橙子"
string description = Fruit.Orange.GetDescription();
}

相關文章

  • C#實現Windows服務安裝卸載開啟停止

    C#實現Windows服務安裝卸載開啟停止

    本文主要介紹了C#實現Windows服務安裝卸載開啟停止,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • C#比較時間大小的方法總結

    C#比較時間大小的方法總結

    在本篇內容里小編給大家分享的是關于C#比較時間大小的方法總結,對此有需要的朋友們可以學習下。
    2018-12-12
  • 淺析WPF中Binding的數據校驗和類型轉換

    淺析WPF中Binding的數據校驗和類型轉換

    在WPF開發(fā)中,Binding實現了數據在Source和Target之間的傳遞和流通,那在WPF開發(fā)中,如何實現數據的校驗和類型轉換呢,下面就跟隨小編一起學習一下吧
    2024-03-03
  • C# 如何獲取出錯的錯誤所在行數信息

    C# 如何獲取出錯的錯誤所在行數信息

    本文主要介紹 C# 中獲取錯誤所在行的方法,在開發(fā)過程中或是用戶在使用過程中,出錯的話方便我們快速定位到錯誤的位置,以便我們處理。
    2016-04-04
  • C#使用哈希表實現XML文件查詢

    C#使用哈希表實現XML文件查詢

    這篇文章主要為大家詳細介紹了C#如何使用哈希表實現XML文件查詢功能,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以參考下
    2024-02-02
  • C#讀取本地網絡配置信息全攻略分享

    C#讀取本地網絡配置信息全攻略分享

    在當今數字化時代,網絡已深度融入我們生活與工作的方方面面,對于軟件開發(fā)而言,掌握本地計算機的網絡配置信息顯得尤為關鍵,而在 C# 編程的世界里,我們又該如何巧妙地讀取這些至關重要的本地網絡配置信息呢?接下來,就讓我們一同踏上探索之旅
    2025-01-01
  • C#實現滑動開關效果

    C#實現滑動開關效果

    這篇文章主要為大家詳細介紹了C#實現滑動開關效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C#異步編程幾點需要注意的地方

    C#異步編程幾點需要注意的地方

    這篇文章我們來討論下關于C#異步編程幾個不成文的建議,希望對你寫出高性能的異步編程代碼有所幫助
    2020-05-05
  • C# WinForm實現自動更新程序的方法詳解

    C# WinForm實現自動更新程序的方法詳解

    這一篇就著重寫一下客戶端的代碼,客戶端主要實現的有:啟動后檢測本地的xml文件,然后發(fā)送到服務器獲取需要更新的文件以及版本列表,感興趣的小伙伴可以了解一下
    2022-10-10
  • C# AttributeUsage使用案例詳解

    C# AttributeUsage使用案例詳解

    這篇文章主要介紹了C# AttributeUsage使用案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08

最新評論

衡阳县| 祁门县| 屏山县| 兴国县| 甘肃省| 六枝特区| 辽阳市| 于都县| 新建县| 龙海市| 会昌县| 安吉县| 苏尼特左旗| 吕梁市| 汽车| 乌什县| 新龙县| 新邵县| 娄烦县| 修文县| 昌邑市| 玉田县| 得荣县| 磴口县| 元氏县| 武威市| 温州市| 恩平市| 乌拉特中旗| 繁昌县| 龙州县| 石嘴山市| 长丰县| 利辛县| 景东| 灵川县| 民勤县| 吉林市| 右玉县| 南开区| 黄大仙区|