为枚举类型添加说明 zt
2024-10-09 22:00:35
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());
}
}
}
从输出可以看出,程序成功的获取了枚举值的说明内容,这样就可以利用这种模式方便的对枚举值添加中文说明,然后在需要的时候提取出来,如:需要做数据绑定的时候。
最新文章
- mysql 触发器
- java写RelativeLayout 的属性
- jquery点击复选框触发事件给input赋值
- Linux中下载、解压、安装文件
- Restful 支持 自定义序列化
- 【pyQuery分析实例】分析体育网冠军联盟比赛成绩
- 初学java之接口基础
- 项目积累——js应用
- 小白日记40:kali渗透测试之Web渗透-SQL手工注入(二)-读取文件、写入文件、反弹shell
- Jersey(1.19.1) - Conditional GETs and Returning 304 (Not Modified) Responses
- oracle 实例名和服务名以及数据库名区别
- Oracle SQL Lesson (7) - 使用子查询
- iOS中UITextField 使用全面解析 分类: ios技术 2015-04-10 14:37 153人阅读 评论(0) 收藏
- 如何使用python timeit模块使用实践
- 异常-----freemarker.core.ParseException: Encountered
- kubernetes入门(04)kubernetes的核心概念(1)
- Dapper连接与事务的简单封装
- SimpleDateFormat日期格式解析
- mysql 数据库安装
- 【LOJ#6281】数列分块5