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

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

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

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

在枚舉中使用DescriptionAttribute特性

首先引入:using System.ComponentModel 命名空間,下面是一個(gè)枚舉應(yīng)用了DescriptionAttribute特性:

復(fù)制代碼 代碼如下:

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

下面是一個(gè)獲取Description特性的擴(kuò)展方法:

復(fù)制代碼 代碼如下:

/// <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必須是一個(gè)枚舉值", "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();
}

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

復(fù)制代碼 代碼如下:

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

相關(guān)文章

  • C#實(shí)現(xiàn)Windows服務(wù)安裝卸載開啟停止

    C#實(shí)現(xiàn)Windows服務(wù)安裝卸載開啟停止

    本文主要介紹了C#實(shí)現(xiàn)Windows服務(wù)安裝卸載開啟停止,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • C#比較時(shí)間大小的方法總結(jié)

    C#比較時(shí)間大小的方法總結(jié)

    在本篇內(nèi)容里小編給大家分享的是關(guān)于C#比較時(shí)間大小的方法總結(jié),對(duì)此有需要的朋友們可以學(xué)習(xí)下。
    2018-12-12
  • 淺析WPF中Binding的數(shù)據(jù)校驗(yàn)和類型轉(zhuǎn)換

    淺析WPF中Binding的數(shù)據(jù)校驗(yàn)和類型轉(zhuǎn)換

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

    C# 如何獲取出錯(cuò)的錯(cuò)誤所在行數(shù)信息

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

    C#使用哈希表實(shí)現(xiàn)XML文件查詢

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

    C#讀取本地網(wǎng)絡(luò)配置信息全攻略分享

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

    C#實(shí)現(xiàn)滑動(dòng)開關(guān)效果

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)滑動(dòng)開關(guān)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C#異步編程幾點(diǎn)需要注意的地方

    C#異步編程幾點(diǎn)需要注意的地方

    這篇文章我們來(lái)討論下關(guān)于C#異步編程幾個(gè)不成文的建議,希望對(duì)你寫出高性能的異步編程代碼有所幫助
    2020-05-05
  • C# WinForm實(shí)現(xiàn)自動(dòng)更新程序的方法詳解

    C# WinForm實(shí)現(xiàn)自動(dòng)更新程序的方法詳解

    這一篇就著重寫一下客戶端的代碼,客戶端主要實(shí)現(xiàn)的有:?jiǎn)?dòng)后檢測(cè)本地的xml文件,然后發(fā)送到服務(wù)器獲取需要更新的文件以及版本列表,感興趣的小伙伴可以了解一下
    2022-10-10
  • C# AttributeUsage使用案例詳解

    C# AttributeUsage使用案例詳解

    這篇文章主要介紹了C# AttributeUsage使用案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評(píng)論

吴川市| 江达县| 枣庄市| 抚远县| 石棉县| 监利县| 隆尧县| 太仆寺旗| 隆尧县| 梓潼县| 阳城县| 巫溪县| 南阳市| 平塘县| 宁津县| 南木林县| 东平县| 汉阴县| 云霄县| 夹江县| 武胜县| 攀枝花市| 岳普湖县| 巢湖市| 邳州市| 永济市| 天津市| 通海县| 昭觉县| 开平市| 突泉县| 军事| 思南县| 蕲春县| 额尔古纳市| 尉氏县| 朔州市| 黄石市| 苏尼特右旗| 阿克陶县| 祁阳县|