手机
当前位置:查字典教程网 >编程开发 >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();

}

【通过特性(attribute)为枚举添加更多信息示例】相关文章:

在Winform和WPF中注册全局快捷键实现思路及代码

C#根据年月日计算星期几的函数小例子

C# dynamic关键字的使用方法

描述C#多线程中lock关键字的使用分析

经典的委托排序(深入分析)

C#实现图片分割方法与代码

C# DataGridView添加新行的2个方法

C#中 const 和 readonly 的不同

C# 如何在MVC3中取消备用控制器的选择

C#实现通过程序自动抓取远程Web网页信息的代码

精品推荐
分类导航