Enum扩展特性实例代码

由于对英语的天生缺陷,在枚举时一直使用中文,这样就不用看注释就知道枚举意思,今天看到博文

使用特性代替了直接使用中文作为属性。特意摘抄部分为以后使用方便

Enum扩展特性实例代码Enum扩展特性实例代码

    /// /// 枚举帮助类/// public static class EnumTools    {/// ///  获取当前枚举值的描述和排序/// /// /// 返回元组Tuple(string,int)public static Tuple GetDescription(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<KeyValuePair> GetAll()        {return GetAll(typeof(T));        }/// /// 获取所有的枚举描述和值/// /// /// public static List<KeyValuePair> 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;        }    }

登录后复制View Code

把原文中的out参数替换成返回元组,由于项目是vs2015开发,不能用c#7.0特性,否则用7.0中的值元组应该更好一点。性能和显示友好性都会有改进。

以上就是Enum扩展特性实例代码的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2439755.html

(0)
上一篇 2025年3月3日 12:11:29
下一篇 2025年3月3日 12:11:50

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • C#中关于扩展方法的实例分析

    这篇文章主要介绍了c#扩展方法,结合实例形式分析了c#扩展方法的功能、使用方法及相关注意事项,需要的朋友可以参考下 本文实例讲述了C#扩展方法。分享给大家供大家参考,具体如下: 扩展方法 扩展方法使您能够向现有类型“添加”方法,而无需创建新…

    2025年3月3日
    200
  • C#中enum与string的相互转换的示例

    这篇文章主要介绍了c#中enum和string的相互转换的相关资料,需要的朋友可以参考下 C# Json转换操作 枚举类型 Enum为枚举提供基类,其基础类型可以是除 Char 外的任何整型,如果没有显式声明基础类型,则使用Int32。 注…

    编程技术 2025年3月3日
    200
  • 如何使用C#中的Enum.GetNames函数获取枚举类型中所有定义的名称

    在C#中,枚举类型是一种非常有用的数据类型,它允许我们定义一些常量来表示某些状态或选项。一旦定义了枚举类型,就可以使用Enum.GetNames函数来获取所有定义的名称。本文将详细介绍如何使用该函数,并提供具体的代码示例。 什么是Enum.…

    2025年3月3日
    200
  • c语言软件怎么改成中文

    将 C 语言软件本地化为中文需要国际化和本地化过程。国际化包括提取可翻译字符串并创建消息目录,而本地化涉及创建中文翻译并将其添加到消息目录中。需要考虑字符编码、日期和数字格式以及用户界面调整等因素。可以使用工具和框架来简化本地化过程,但需要…

    2025年3月3日
    200
  • 手机版谷歌浏览器怎么设置中文

    php小编百草为您介绍如何设置手机版谷歌浏览器的中文语言。谷歌浏览器是目前最流行的浏览器之一,但是在默认设置下,可能会显示英文界面。不用担心,您可以通过简单的步骤设置谷歌浏览器的中文语言,让您更加方便地浏览网页,享受优质的上网体验。下面让我…

    2025年3月2日 互联网
    200
  • Golang语言特性深度剖析:快速开发与轻量级部署

    golang语言特性深度剖析:快速开发与轻量级部署 引言:随着互联网的快速发展,开发人员对于高效、简明的编程语言需求越来越迫切。在众多编程语言中,Golang(也称为Go)因其独特的特性和卓越的性能而备受推崇。本文将深入剖析Golang语言…

    编程技术 2025年3月2日
    200
  • golang可以用中文吗

    golang可以用中文,Golang的语法和关键字是英文的,这是为了保持和其他编程语言的一致性,以及方便与其他开发者进行交流和合作,Golang支持使用中文作为变量名、函数名和注释等标识符,但是在实际开发中,还是建议尽量使用英文标识符,以保…

    2025年3月1日
    400
  • 了解如何在golang中设计可扩展的Select Channels Go并发式编程

    了解如何在golang中设计可扩展的Select Channels Go并发式编程 导言: Go语言是一种高效且简洁的并发式编程语言,其并发模型主要基于goroutine和channel。通过goroutine的轻量级线程和通道的直观通信机…

    2025年3月1日
    200
  • 选择适用的Go版本,根据需求和特性

    随着互联网的快速发展,编程语言也在不断演化和更新。其中,Go语言作为一种开源的编程语言,在近年来备受关注。Go语言的设计目标是简单、高效、安全且易于开发和部署。它具有高并发、快速编译和内存安全等特性,让它在Web开发、云计算和大数据等领域中…

    2025年3月1日
    200
  • 探索Go语言的特点和优势

    深入解析Go语言特性与优势 Go语言是由Google开发的一种静态类型、编译型、并发型、垃圾回收的编程语言。它通过独特的特性和优势吸引了越来越多的开发者。本文将深入探讨Go语言的特性,并结合具体的代码示例,展示其独特之处和潜力。 一、简洁的…

    2025年3月1日
    200

发表回复

登录后才能评论