Enum扩展特性的示例分析
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章将为大家详细讲解有关Enum扩展特性的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用特性代替了直接使用中文作为属性。特意摘抄部分为以后使用方便
千家信息网最后更新 2025年11月09日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安全错误
数据库的锁怎样保障安全
sql删除数据库表某个字段
绝地求生国际版怎么切换服务器
网络安全的内容两百字
服务器raid驱动在pe中注入
客如云收银系统网络安全吗
完美世界诸神之战屠龙服务器
天天生鲜项目 数据库
网络安全运行 迟
web服务器需要配置虚拟网卡吗
db2建立数据库
海南软件开发区
浪潮服务器应用在哪些地方
酷盈分销软件开发
咻电互联网科技有限公司
北京字跳网络技术和字节跳动
山东泰州网络安全知识竞赛
曙光服务器内部
软件开发 开发人员配置
怎么去学习网络安全
怎么创造网络安全
广东c语言软件开发费用
思科连不上日志服务器
徐汇区工业软件开发预算
徐州高清视频系统服务器
工程项目数据库
银行网络技术报告
数据库asp符号
网络安全方面的国际奖
博易大师 服务器
长宁区电商软件开发厂家用户体验