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

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

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

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

在枚舉中使用DescriptionAttribute特性

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

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

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

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

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

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

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

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

相關(guān)文章

  • C#利用RabbitMQ實現(xiàn)點對點消息傳輸

    C#利用RabbitMQ實現(xiàn)點對點消息傳輸

    RabbitMQ做為消息代理,負(fù)責(zé)接收和轉(zhuǎn)發(fā)消息,可以將RabbitMQ比喻為一個郵筒、一個郵局和一個郵遞員。本文主要以一個簡單的小例子,簡述RabbitMQ實現(xiàn)消息傳輸?shù)南嚓P(guān)內(nèi)容,僅供學(xué)習(xí)分享使用,如有不足之處,還請指正。
    2021-05-05
  • C#基礎(chǔ)之泛型委托實例教程

    C#基礎(chǔ)之泛型委托實例教程

    這篇文章主要介紹了C#中的泛型委托,并以EventHandler為例對泛型委托的常見用法進(jìn)行了實例分析,需要的朋友可以參考下
    2014-09-09
  • C#中方括號[]的語法及作用介紹

    C#中方括號[]的語法及作用介紹

    C#中方括號[]可用于數(shù)組,索引、屬性,更重要的是用于外部DLL類庫的引用。
    2013-04-04
  • C# Split分隔字符串的應(yīng)用(C#、split、分隔、字符串)

    C# Split分隔字符串的應(yīng)用(C#、split、分隔、字符串)

    C# Split分隔字符串主要包括用字符串分隔,用多個字符來分隔,用單個字符來分隔等方法實現(xiàn),下面的具體的實現(xiàn)代碼
    2008-11-11
  • 深入委托與多播委托的詳解

    深入委托與多播委托的詳解

    本篇文章是對委托與多播委托進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • C#中參數(shù)個數(shù)可變的方法實例分析

    C#中參數(shù)個數(shù)可變的方法實例分析

    這篇文章主要介紹了C#中參數(shù)個數(shù)可變的方法,以一個簡單實例分析了C#中參數(shù)個數(shù)可變的方法,主要是使用params關(guān)鍵字來實現(xiàn)的,是C#編程中比較實用的技巧,需要的朋友可以參考下
    2014-11-11
  • 開源一個c# 新的雪花算法

    開源一個c# 新的雪花算法

    這篇文章主要介紹了開源一個c# 新的雪花算法的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • 通過C#實現(xiàn)自動售貨機接口

    通過C#實現(xiàn)自動售貨機接口

    這篇文章主要介紹了通過C#實現(xiàn)自動售貨機接口,需要的朋友可以參考下
    2015-07-07
  • C#隊列的簡單使用

    C#隊列的簡單使用

    隊列的特性很簡答,就是先進(jìn)先出,一般利用數(shù)組來實現(xiàn),本文就介紹了C#隊列的簡單使用,文中根據(jù)實例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C#事件管理器如何清空所有監(jiān)聽詳解

    C#事件管理器如何清空所有監(jiān)聽詳解

    這篇文章主要給大家介紹了關(guān)于C#事件管理器如何清空所有監(jiān)聽的相關(guān)資料,文中通過示例代碼以及圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評論