程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 經由過程特征(attribute)為列舉添加更多信息示例

經由過程特征(attribute)為列舉添加更多信息示例

編輯:C#入門知識

經由過程特征(attribute)為列舉添加更多信息示例。本站提示廣大學習愛好者:(經由過程特征(attribute)為列舉添加更多信息示例)文章只能為提供參考,不一定能成為您想要的結果。以下是經由過程特征(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();
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved