.net 枚举(使用备注)

获取备注的类:  

/// <summary>

/// 备注特性

/// </summary>

public class RemarkAttribute : Attribute

{

private string m_remark;

public RemarkAttribute(string remark)

{

this.m_remark = remark;

}

/// <summary>

/// 备注

/// </summary>

public string Remark

{

get { return m_remark; }

set { m_remark = value; }

}

/// <summary>

/// 获取枚举的备注信息

/// </summary>

/// <param name="val">枚举值</param>

/// <returns></returns>

public static string GetEnumRemark(Enum val)

{

try

{

Type type = val.GetType();

FieldInfo fd = type.GetField(val.ToString());

if (fd == null)

return string.Empty;

object[] attrs = fd.GetCustomAttributes(typeof(RemarkAttribute), false);

string name = string.Empty;

foreach (RemarkAttribute attr in attrs)

{

name = attr.Remark;

}

return name;

}

catch (Exception ex)

{

Log4NetHelper.Log.Error("GetEnumRemark Erro",ex);

return null;

}

}

}

/// <summary>

/// 枚举扩展类

/// </summary>

public static class EnumExtension

{

/// <summary>

/// 获取枚举的备注信息

/// </summary>

/// <param name="em"></param>

/// <returns></returns>

public static string GetRemark(this Enum em)

{

try

{

Type type = em.GetType();

FieldInfo fd = type.GetField(em.ToString());

if (fd == null)

return string.Empty;

object[] attrs = fd.GetCustomAttributes(typeof(RemarkAttribute), false);

string name = string.Empty;

foreach (RemarkAttribute attr in attrs)

{

name = attr.Remark;

}

return name;

}

catch (Exception ex)

{

Log4NetHelper.Log.Error("GetRemark Error", ex);

return null;

}

}

枚举类:

public enum CodeEmun

{

/// <summary>

/// 成功

/// </summary>

[Remark("成功")]

SUCCESS = 1,

/// <summary>

/// 失败

/// </summary>

[Remark("失败")]

FAILED = 0,

/// <summary>

/// xml格式错误

/// </summary>

[Remark("xml格式错误")]

XMLFORMATERROR = 2,

/// <summary>

/// 签名错误

/// </summary>

[Remark("签名错误")]

SINGERROR = 3,

/// <summary>

/// 引用了不存在的对象(例如错诨的订单号)

/// </summary>

[Remark("引用了不存在的对象(例如错诨的订单号)")]

ORDERIDERROR = 101,

/// <summary>

/// 业务状态不正确

/// </summary>

[Remark("业务状态不正确")]

STATUSERROR = 102,

/// <summary>

/// 由于业务限制导致业务不能执行

/// </summary>

[Remark("由于业务限制导致业务不能执行")]

YEWULIMIT = 103,

/// <summary>

/// 实名认证失败

/// </summary>

[Remark("实名认证失败")]

IDENTIFICATION = 104

}

调用方法:

CodeEmun enumItem = (CodeEmun)Enum.Parse(typeof(InvestmentCommon.CodeEmun), notifyInfo.Code.ToString());

string codeMessage = RemarkAttribute.GetEnumRemark(enumItem);

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2025-01-02 09:07:26

.net 枚举(使用备注)的相关文章

Attribute 给枚举添加备注

记录 public class RemarkAttribute : Attribute { private string m_remark; public RemarkAttribute(string remark) { this.m_remark = remark; } public string Remark { get { return m_remark; } set { m_remark = value; } } public static string GetEnumRemark(En

设置枚举属性,并且获取到属性

通过枚举来获取属性,和通过枚举的值来获取属性 public enum TestEmun { [Remark("AAA")] aaa=1, [Remark("BBB")] bbb=2, [Remark("CCC")] ccc=3 } public void GetEnumName() { //需要引用 Lib.DataModel.SysEnum 命名空间才可以使用 扩展方法 string name = TestEmun.aaa.GetRemark(

C# 中 枚举Enum 一些转换的方法整理

工作中 经常遇到枚举 的一些转换  特别是获取枚举备注等  特地整理下 方法以后使用 public void TestMethod1() { TestEnumOne colorEnum = TestEnumOne.Red; int colorValue = 0x0000FF; string colorStr = "Red"; string colorDes = "红色"; //枚举To枚举字符串 colorStr = colorEnum.ToString(); co

C# 给枚举类型增加一个描述特性

前言 相信很多人对枚举并不陌生,枚举可以很方便和直观的管理一组特定值.如果我们在页面上直接输出我们希望匹配的汉语意思或则其他满足我们需求的语句就更好了,当然,通常小伙伴们都会再页面上if(enum==1) “我是一个枚举”或者switch(enum)这种方式解决. 那今天我们就来介绍一种更优雅的解决方法 开整 先定义一个枚举类 enum StatusEnum { [Description("修改")] Update = 1, [Description("新增")]

C# .NET 获取枚举值的自定义属性

一.定义一个类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Reflection; namespace XXX.XXX.Utils { /// <summary> /// 备注特性 /// </summary> public class DescAttribute : A

【Windows】Windows中解析DOS的DIR命令使用

总结一下cmd中的dir命令的用法 64位win10系统上,打印帮助文档. D:\test>dir /? 显示目录中的文件和子目录列表. DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N] [/O[[:]sortorder]] [/P] [/Q] [/R] [/S] [/T[[:]timefield]] [/W] [/X] [/4] [drive:][path][filename] 指定要列出的驱动器

logback备注

<?xmlversion="1.0"encoding="UTF-8"?> <!-- <configuration>包含的属性 scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true. scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒.当scan为true时,此属性生效.默认的时间间隔为1分钟. debug: 当此属性设置为true时,将打印出logb

TYVJ P1012 火柴棒等式 Label:枚举

背景 NOIP2008年提高组第二题 描述 给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示:注意:1. 加号与等号各自需要两根火柴棍2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A.B.C>=0)3. n根火柴棍必须全部用上 输入格式 输入文件matches.in共一行,又一个整数n(n<=24). 输出格式 输出文件matches.out共一行,表示能拼成的不同等

一个NTFS数据流枚举,附加,删除的类CNtfsStream

功能简介:  数据流是NTFS文件系统下隐藏文件的极好方法,是NTFS文件系统特有的功能.  这个类通过调用函数BackupRead枚举指定路径中的数据流,同时可以执行数据流的附加(添加),删除等操作. 该类可以支持Unicode和ANSI.  已在VC++7.1和VC++9.0中编译通过. 使用方法: CNtfsStream ntfsStream; CPtrList StreamList; //获取数据流信息 ntfsStream.GetStreamList(_T("D:\\Install&q