C#将Enum枚举映射到文本字符串

C#自定义属性与映射实现数组常量到字符串
本文介绍了如何在C#中使用自定义属性和映射方法将数组常量映射到字符串,以提高代码的可读性和维护性。通过为每个枚举添加Description属性,可以在代码中方便地读取描述字符串。

演示程序下载地址: 【北方 网通】    【电信或网通】

源程序下载地址: 【北方网通】    【电信网通】

点击这里查看原文地址

【下载说明】

1 点击上面的地址,打开下载页面

2 点击"普通下载"--等待30秒--点击"下载"按钮--保存


介绍

当将以前的C代码移植到C#中时,我快发疯了,因为有很多的数组需要将常量映射到字符串。当我在寻找一个C#的方法来完成的时候,我发现了一个自定义属性和映射的方法。

如何使用代码?

对每一个enum枚举都添加一个Description属性:

private enum MyColors
{
   [Description("yuk!")]       LightGreen    = 0x012020,
   [Description("nice :-)")]   VeryDeepPink  = 0x123456,
   [Description("so what")]    InvisibleGray = 0x456730,
   [Description("no comment")] DeepestRed    = 0xfafafa,
   [Description("I give up")]  PitchBlack    = 0xffffff,
}

为了在代码中读取描述字符串,你可以如下这么做:

public static string GetDescription(Enum value)
{
   FieldInfo fi= value.GetType().GetField(value.ToString()); 
   DescriptionAttribute[] attributes = 
         (DescriptionAttribute[])fi.GetCustomAttributes(
         typeof(DescriptionAttribute), false);
   return (attributes.Length>0)?attributes[0].Description:value.ToString();
}

如果没有下面的using语句,你的代码是不能通过编译的。

using System.ComponentModel;        
using System.Reflection;

好处

代替代码中大量的常量和数组,上面的解决方法保持了预定义和描述在一起,并阅读性也很强。

历史

我仅仅是一个偶然的机会才发现原来FrameWork框架还提供一个DescriptionAttribute类的。当我第一次用我自己定义的属性时,发生了一些冲突,因为我引入了ComponentModel命名空间。



【更多阅读】
  1. [译]用C#检测你的打印机是否连接
  2. [原]使用Excel的VBA来读取和修改bmp位图像素数据
  3. [译]C# DirectShow编程手册及实例
  4. [原]IT6633P V0.19 数据手册、设计电路图、程序源代码
  5. [原]C#读取CSDN博客的文章名称及地址
  6. [原]Baidu:C#利用百度来搜索网页、图片、视频等等
  7. [译]在.NET中使用DirectShow
  8. [译]将C++代码转换为HTML
  9. [译]在C# .NET2.0实现单实例应用程序
  10. [译]在C#中使用J#运行时来压缩与解压缩
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值