前言

相信很多人对枚举并不陌生,枚举可以很方便和直观的管理一组特定值。如果我们在页面上直接输出我们希望匹配的汉语意思或则其他满足我们需求的语句就更好了,当然,通常小伙伴们都会再页面上if(enum==1) “我是一个枚举”或者switch(enum)这种方式解决。

那今天我们就来介绍一种更优雅的解决方法

开整

先定义一个枚举类

  enum StatusEnum{[Description("修改")]Update = 1,[Description("新增")]Insert = 2,[Description("删除")]Delete = 3}

Description是属性特性的意思。记住即可大家要记住,所有的特性类必须继承自 Attribute,所以,我们自定义一个特性类
/// <summary>/// 备注特性/// </summary>public class RemarkAttribute : Attribute{/// <summary>/// 备注/// </summary>public string Remark { get; set; }public RemarkAttribute(string remark){this.Remark = remark;}}

有了这个特性类之后呢,我们还需要一个枚举扩展类

    /// <summary>/// 枚举扩展类/// </summary>public static class EnumExtension{/// <summary>/// 获取枚举的备注信息/// </summary>/// <param name="em"></param>/// <returns></returns>public static string GetRemark(this Enum value){FieldInfo fi = value.GetType().GetField(value.ToString());if (fi == null){return value.ToString();}object[] attributes = fi.GetCustomAttributes(typeof(RemarkAttribute), false);if (attributes.Length > 0){return ((RemarkAttribute)attributes[0]).Remark;}else{return value.ToString();}}public static string GetEnumDescription(this Enum value){FieldInfo fi = value.GetType().GetField(value.ToString());DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);if (attributes.Length > 0){return attributes[0].Description;}else{return value.ToString();}}}

需要引入命名空间:

using System.Collections.Generic;
using System.ComponentModel;

有了这个枚举扩展类,我们就可以直接使用了

 Console.WriteLine((int)StatusEnum.Insert);//输出原有枚举值Console.WriteLine(StatusEnum.Insert.GetRemark());//获取枚举备注信息Console.WriteLine(StatusEnum.Insert.GetEnumDescription());//获取枚举特性值

调试过程

转载于:https://www.cnblogs.com/zhangxiaoyong/p/7452408.html

C# 给枚举类型增加一个描述特性相关推荐

  1. C# 给枚举类型增加一个备注特性

    /// <summary>/// 备注特性/// </summary>public class RemarkAttribute : Attribute{/// <summ ...

  2. 获取枚举类型的 中文 描述 和值

    C# 通过Attitude特性来实现,相对方便些 namespace Extensions {/// <summary>/// 定义枚举扩展类/// </summary>pub ...

  3. 枚举类型 实现一个enumeration对于类的加工的函数

    枚举类型 枚举类型是一种类型,是值的有限集合.如果值定义为这个类型为可列出的(可枚举的)的. 为一个构造函数enumeration 实现enumeration对于类的加工的函数 思路,这个和工厂类不一 ...

  4. 现代C++新特性 强枚举类型(PC浏览效果更佳)

    文字版PDF文档链接:现代C++新特性(文字版)-C++文档类资源-CSDN下载 1. 枚举类型的弊 C++之父本贾尼·斯特劳斯特卢普曾经在他的The Design And Evolution Of ...

  5. c++ enum 给定类型_讲解C++中的枚举类型以及声明新类型的方法

    C++枚举类型如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型.所谓"枚举"是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内.声明枚举类型用 ...

  6. ef 在此上下文中只支持基本类型或枚举类型_Java 中的 6 颗语法糖

    作者:Java 技术栈来源:SegmentFault 思否社区 原文作者:danchu原文链接:https://blog.csdn.net/danchu/article/details/5498644 ...

  7. java 枚举类型enum

    简单介绍 Java 中的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型.要了解枚举类型,建议大家先打开jdk 中的Enum 类简单读一下,这个类 ...

  8. [小技巧]C#中如何为枚举类型添加描述方法

    背景 在我们的日常开发中,我们会经常使用枚举类型.有时我们只需要显示枚举的值或者枚举值对应名称, 但是在某些场景下,我们可能需要将枚举值显示为不同的字符串. 例: 当前我们有如下枚举Level 这个枚 ...

  9. java枚举对象作用_浅析Java编程中枚举类型的定义与使用

    定义枚举类型时本质上就是在定义一个类,只不过很多细节由编译器帮您补齐了,所以某些程度上,enum关键字的 作用就像是class或interface. 当您使用"enum"定义枚举类 ...

  10. #define typedef 枚举类型

    typedef :typedef可以把一个类型重命名,可以使用typedef为一个已有的类型取一个新的名字,使用目的主要有两个:一.是给变量一个易记且意义明确的新名字,二.简化了一些比较复杂的类型名. ...

最新文章

  1. Maven——profile介绍
  2. linux搭建oracle脚本,Linux脚本自动安装Oracle
  3. 用遗传算法求3维函数 的最小值_遗传算法可视化项目(4):遗传算法
  4. 区块链开发公司浅析区块链服务商提供哪些解决方案
  5. Gb28181之Ps流解析H264
  6. 全网首发!超全SparseR-CNN实战教程
  7. 手机电脑同屏_把手游变成端游的同屏神器,就是这款Onebit“X9”了!
  8. Jave_erhui
  9. PTA程序设计类实验辅助教学平台-基础编程题--JAVA--7.4 BCD解密
  10. Latex复杂三线图的处理
  11. 社区论坛小程序源码,功能齐全,简洁漂亮,前端+后端
  12. VBOT - PHP 个人微信号群管理机器人
  13. 高通android编译命令,高通Android源码
  14. 企业供应链管理为什么要“上云”?
  15. 【报告分享】2021小红书美护趋势品牌报告-小红书聚美丽(附下载)
  16. matlab2020a安装完多大_Matlab2020a
  17. 简易聊天室的设计 --- JSP
  18. fabric 环境 搭建与安装
  19. 彻底搞明白梯度下降算法1:方向导数与梯度概念理解
  20. python turtle绘图中角度坐标系的绝对零度方向是_ABAQUS 子程序VUMAT 的坐标系的问题的讨论...

热门文章

  1. 姚前:分布式账本与传统账本的异同及其现实意义
  2. (二)Luence——代码实现索引及搜索
  3. C/C++/Objective-C经典书籍推荐
  4. Python自学笔记-map和reduce函数(来自廖雪峰的官网Python3)
  5. Ionic系列——调用系统电话
  6. Median of Two Sorted Arrays@LeetCode
  7. 我如何学习:开篇 先提升下肾上腺素
  8. uva 1045(二分图最大权匹配)
  9. 添加C1WPFChart快捷键
  10. Linux群常见问题整理(一)[转]