enum Orientation
{
[DescriptionAttribute("东")]
East,
[DescriptionAttribute("南")]
South,
[DescriptionAttribute("西")]
West,
[DescriptionAttribute("北")]
North
}

但又如何获取DescriptionAttribute的内容呢?呵呵,答案就是通过反射。下面是我封装获取DescriptionAttribute内容的扩展方法。

static string GetDescription<T>(this T value)
{
var memInfo = value.GetType().GetMember(value.ToString());
var attributes = memInfo[].GetCustomAttributes(typeof(DescriptionAttribute), false).Cast<DescriptionAttribute>();
if (attributes.Any())
return attributes.First().Description;
return string.Empty;
}

下面就是测试的代码以及测试结果

static class Program
{
enum Orientation
{
[DescriptionAttribute("东")]
East,
[DescriptionAttribute("南")]
South,
[DescriptionAttribute("西")]
West,
[DescriptionAttribute("北")]
North
}
static string GetDescription<T>(this T value)
{
var memInfo = value.GetType().GetMember(value.ToString());
var attributes = memInfo[].GetCustomAttributes(typeof(DescriptionAttribute), false).Cast<DescriptionAttribute>();
if (attributes.Any())
return attributes.First().Description;
return string.Empty;
}
static void Main()
{
foreach (var s in Enum.GetValues(typeof(Orientation)))
{
Console.WriteLine("值:{0}\t\t说明:{1}",s.ToString(),s.GetDescription());
}
}
}

从输出可以看出,程序成功的获取了枚举值的说明内容,这样就可以利用这种模式方便的对枚举值添加中文说明,然后在需要的时候提取出来,如:需要做数据绑定的时候。

最新文章

  1. mysql 触发器
  2. java写RelativeLayout 的属性
  3. jquery点击复选框触发事件给input赋值
  4. Linux中下载、解压、安装文件
  5. Restful 支持 自定义序列化
  6. 【pyQuery分析实例】分析体育网冠军联盟比赛成绩
  7. 初学java之接口基础
  8. 项目积累——js应用
  9. 小白日记40:kali渗透测试之Web渗透-SQL手工注入(二)-读取文件、写入文件、反弹shell
  10. Jersey(1.19.1) - Conditional GETs and Returning 304 (Not Modified) Responses
  11. oracle 实例名和服务名以及数据库名区别
  12. Oracle SQL Lesson (7) - 使用子查询
  13. iOS中UITextField 使用全面解析 分类: ios技术 2015-04-10 14:37 153人阅读 评论(0) 收藏
  14. 如何使用python timeit模块使用实践
  15. 异常-----freemarker.core.ParseException: Encountered
  16. kubernetes入门(04)kubernetes的核心概念(1)
  17. Dapper连接与事务的简单封装
  18. SimpleDateFormat日期格式解析
  19. mysql 数据库安装
  20. 【LOJ#6281】数列分块5

热门文章

  1. 分布式日志收集系统--Chukwa
  2. UITextField监听文字输入事件
  3. FormBorderStyle.None 时候最大化不遮盖任务栏
  4. 1509 -- Glass Beads POJ
  5. BeanFactory和FactoryBean
  6. js中replace的正则替换
  7. 深入浅出 ES6:ES6 与 Babel / Broccoli 的联用
  8. 进阶:使用 EntityManager
  9. Eclipse插件—Easy Explorer
  10. AppStore 沙箱环境的测试流程