Enum扩展特性的示例分析
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章将为大家详细讲解有关Enum扩展特性的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用特性代替了直接使用中文作为属性。特意摘抄部分为以后使用方便
千家信息网最后更新 2025年01月19日Enum扩展特性的示例分析
这篇文章将为大家详细讲解有关Enum扩展特性的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
使用特性代替了直接使用中文作为属性。特意摘抄部分为以后使用方便
////// 枚举帮助类/// public static class EnumTools {////// 获取当前枚举值的描述和排序/// /// ///返回元组Tuple(string,int) public static TupleGetDescription(this Enum value) {int order = 0;string description = string.Empty; Type type = value.GetType();// 获取枚举FieldInfo fieldInfo = type.GetField(value.ToString());// 获取枚举自定义的特性DescriptionAttributeobject[] attrs = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false); DescriptionAttribute attr = (DescriptionAttribute)attrs.FirstOrDefault(a => a is DescriptionAttribute); description = fieldInfo.Name;if (attr != null) { order = attr.Order; description = attr.Name; }return new Tuple (description,order); }/// /// 获取当前枚举的所有描述/// ///public static List > GetAll () {return GetAll(typeof(T)); }/// /// 获取所有的枚举描述和值/// /// ///public static List > GetAll(Type type) { List list = new List ();// 循环枚举获取所有的Fieldsforeach (var field in type.GetFields()) {// 如果是枚举类型if (field.FieldType.IsEnum) {object tmp = field.GetValue(null); Enum enumValue = (Enum)tmp;int intValue = Convert.ToInt32(enumValue);var dec = enumValue.GetDescription();int order= dec.Item2;string showName = dec.Item1; // 获取描述和排序list.Add(new EnumToolsModel { Key = intValue, Name = showName, Order = order }); } }// 排序并转成KeyValue返回return list.OrderBy(i => i.Order).Select(i => new KeyValuePair (i.Key, i.Name)).ToList(); }/// /// 枚举Model/// partial class EnumToolsModel {public int Order { get; set; }public string Name { get; set; }public int Key { get; set; } } }////// 枚举特性/// [AttributeUsage(AttributeTargets.Field, AllowMultiple = false, Inherited = false)]public class DescriptionAttribute : Attribute {////// 排序/// public int Order { get; set; }////// 名称/// public string Name { get; set; }////// 定义描述名称/// /// 名称public DescriptionAttribute(string name) { Name = name; }////// 定义描述名称和排序/// /// 名称/// 排序public DescriptionAttribute(string name, int order) { Name = name; Order = order; } }
把原文中的out参数替换成返回元组,由于项目是vs2015开发,不能用c#7.0特性,否则用7.0中的值元组应该更好一点。性能和显示友好性都会有改进。
关于"Enum扩展特性的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
特性
排序
名称
篇文章
示例
分析
更多
帮助
不错
实用
使用方便
内容
原文
参数
属性
性能
文章
知识
类型
项目
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
记彔网络安全行为手抄报
郑州比较好的软件开发公司
四川思创互联网科技有限公司
ios软件开发师月薪多少
商米软件开发
榆林网络安全宣传周
淄博网络安全监察大队地址
ipad pro连接云服务器
三亚众合天辉互联网科技有限公司
上交网络安全学院是电影吗
农场游戏北京软件开发公司
贵州卫星同步子母钟服务器
工业园区智能网络技术品质保障
大话手游一生最爱服务器
laravel数据库关联查找
学校网络安全问题整改方案
腾讯云制作服务器镜像
信息管理系统数据库设计
网络安全财产安全主题班会的感悟
山东软件开发哪家可靠
数据库应用技术第11章 测验
恒智天成资料软件开发
软件开发本地化服务要求
cf手游永久服务器
厦门软件开发敏捷管理
软件工程数据库表太多怎么办
fm2011数据库
智慧水务软件开发成本
敏捷软件开发测试流程
恒团惠互联网科技有限公司