一、C#获取特性(坑)
一、C#获取特性(坑)
- [Description("系统状态码")]
- [Display(Name = "成功", Description = "请求成功!")]
- Success = 0,
- [Description("系统状态码")]
- [Display(Name = "成功", Description = "请求错误!")]
- err= 0,
- 当你
- var s=SatausCode.CommonCodeEnum.err.GetDisplayDescription(); //获取err特性 但是因为都是0,那么就匹配第一个特性的,而不是根据我err 来的, 因为 我很多的时候就会使用到200
- 各位
--
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.ComponentModel.DataAnnotations;
- using System.Reflection;
- namespace Test
- {
- class Program
- {
- static void Main(string[] args)
- {
- var s=SatausCode.CommonCodeEnum.GetReqCreditDatalOK.GetDisplayDescription();
- }
- }
- public static class SatausCode
- {
- public enum CommonCodeEnum
- {
- /// <summary>
- /// 成功
- /// </summary>
- [Description("系统状态码")]
- [Display(Name = "成功", Description = "请求成功!")]
- Success = ,
- /// <summary>
- /// 系统状态码
- /// </summary>
- [Description("系统状态码")]
- [Display(Name = "失败", Description = "请求失败!")]
- Error = ,
- /// <summary>
- /// 验签状态码
- /// </summary>
- [Description("验签状态码")]
- [Display(Name = "部分参数不完整", Description = "部分参数不完整!")]
- Incomplete = ,
- /// <summary>
- /// 系统状态码
- /// </summary>
- [Description("系统状态码")]
- [Display(Name = "内部服务异常", Description = "内部服务异常!")]
- Ex = ,
- /// <summary>
- /// 系统状态码
- /// </summary>
- [Description("验签状态码")]
- [Display(Name = "timeStamp参数异常", Description = "timeStamp参数异常!")]
- TimeStamp_Str = ,
- /// <summary>
- /// 系统状态码
- /// </summary>
- [Description("验签状态码")]
- [Display(Name = "请求超时", Description = "请求超时!")]
- Timeout = ,
- /// <summary>
- /// 系统状态码
- /// </summary>
- [Description("验签状态码")]
- [Display(Name = "用户权限限制", Description = "用户权限限制!")]
- Power = ,
- /// <summary>
- /// 系统状态码
- /// </summary>
- [Description("验签状态码")]
- [Display(Name = "签名不合法", Description = "签名不合法!")]
- Sign = ,
- /// <summary>
- /// 系统状态码
- /// </summary>
- [Description("区分城市状态码")]
- [Display(Name = "未授权此城市", Description = "未授权此城市!")]
- DisArea = ,
- /// <summary>
- /// 系统状态码
- /// </summary>
- [Description("系统状态码")]
- [Display(Name = "远程服务器返回错误: (404) 未找到。", Description = "远程服务器返回错误: (404) 未找到!")]
- NoFind = ,
- /// <summary>
- /// 系统状态码
- /// </summary>
- [Description("系统状态码")]
- [Display(Name = "远程服务器返回错误: (500) 内部服务器错误。", Description = "远程服务器返回错误: (500) 内部服务器错误。")]
- NoErr = ,
- #region 房估估
- /// <summary>
- /// 房估估
- /// </summary>
- [Description("第三方")]
- [Display(Name = "查询小区/地址不能为空", Description = "查询小区/地址不能为空!")]
- VillageNull = ,
- /// <summary>
- /// 房估估
- /// </summary>
- [Description("房估估第三方")]
- [Display(Name = "小区匹配", Description = "小区数据获取成功!")]
- GetVillageOk = ,
- /// <summary>
- /// 房估估 ------------报错信息 用它的 暂不使用
- /// </summary>
- [Description("房估估第三方")]
- [Display(Name = "小区匹配", Description = "小区获取数据失败!")]
- GetVillageErr = ,
- /// <summary>
- /// 房估估
- /// </summary>
- [Description("房估估第三方")]
- [Display(Name = "房估估小区评价", Description = "小区评价数据成功!")]
- GetHouseEvalOk = ,
- /// <summary>
- /// 房估估
- /// </summary>
- [Description("房估估第三方")]
- [Display(Name = "房估估小区评价", Description = "小区评价数据成功!")]
- GetHouseEvalErr = ,
- #endregion
- #region 同盾
- /// <summary>
- ///
- /// </summary>
- [Description("征信第三方")]
- [Display(Name = "请求凭证无效", Description = "请求凭证无效!")]
- CertErr = ,
- /// <summary>
- /// 征信
- /// </summary>
- [Description("征信第三方")]
- [Display(Name = "请求用户数据", Description = "请求用户数据成功!")]
- GetReqCreditDatalOK = ,
- /// <summary>
- /// 征信
- /// </summary>
- [Description("征信第三方")]
- [Display(Name = "请求用户数据", Description = "请求用户数据失败!")]
- GetReqCreditDatalErr = ,
- /// <summary>
- /// 征信
- /// </summary>
- [Description("征信第三方")]
- [Display(Name = "获取用户数据", Description = "获取用户数据成功!")]
- GetCreditDataOK = ,
- /// <summary>
- /// 征信
- /// </summary>
- [Description("征信第三方")]
- [Display(Name = "获取用户数据", Description = "获取用户数据失败!")]
- GetCreditDataErr = ,
- /// <summary>
- /// 征信
- /// </summary>
- [Description("征信第三方")]
- [Display(Name = "获取详情成功", Description = "获取详情成功!")]
- GetCreditDetailOK = ,
- /// <summary>
- /// 征信
- /// </summary>
- [Description("征信第三方")]
- [Display(Name = "小区地址有误", Description = "小区地址有误!")]
- Getvillage = ,
- /// <summary>
- /// 征信
- /// </summary>
- [Description("征信第三方")]
- [Display(Name = "获取数据详情", Description = "获取数据详情失败!")]
- GetCreditDetailErr = ,
- /// <summary>
- /// 征信
- /// </summary>
- [Description("征信第三方")]
- [Display(Name = "请求数据", Description = "请求数据详情成功!")]
- GetReqCreditDetailOK = ,
- /// <summary>
- /// 征信
- /// </summary>
- [Description("征信第三方")]
- [Display(Name = "请求数据", Description = "请求数据详情失败!")]
- GetReqCreditDetailErr = ,
- #endregion
- #region 房估估验证
- /// <summary>
- /// 系统状态码
- /// </summary>
- [Description("房估估验证")]
- [Display(Name = "输入房产面积数据格式有误", Description = "输入房产面积数据格式有误!")]
- Areaformat = ,
- /// <summary>
- /// 系统状态码
- /// </summary>
- [Description("房估估验证")]
- [Display(Name = "输入层数据格式有误", Description = "输入层数据格式有误!")]
- Floorformat = ,
- /// <summary>
- /// 系统状态码
- /// </summary>
- [Description("房估估验证")]
- [Display(Name = "输入总楼层数据格式有误", Description = "输入总楼层数据格式有误!")]
- TotalFloorformat = ,
- /// <summary>
- /// 系统状态码
- /// </summary>
- [Description("房估估验证")]
- [Display(Name = "所在楼层大于总楼层数据有误", Description = "所在楼层大于总楼层数据有误!")]
- TotalBigFloorformat = ,
- #endregion
- #region 同盾验证
- /// <summary>
- /// 系统状态码
- /// </summary>
- [Description("同盾验证")]
- [Display(Name = "身份证号格式不对", Description = "身份证号格式不对!")]
- CardIdformat = ,
- /// <summary>
- /// 系统状态码
- /// </summary>
- [Description("同盾验证")]
- [Display(Name = "手机号格式不对", Description = "手机号格式不对!")]
- Telformat = ,
- #endregion
- /// <summary>
- /// 系统状态码
- /// </summary>
- [Description("评估")]
- [Display(Name = "评估失败", Description = "评估失败!")]
- EvelErr = ,
- }
- /// <summary>
- /// 获取特性 (DisplayAttribute) 的说明;如果未使用该特性,则返回枚举的名称。
- /// </summary>
- /// <param name="enumValue"></param>
- /// <returns></returns>
- public static string GetDisplayDescription(this Enum enumValue)
- {
- FieldInfo fieldInfo = enumValue.GetType().GetField(enumValue.ToString());
- DisplayAttribute[] attrs =
- fieldInfo.GetCustomAttributes(typeof(DisplayAttribute), false) as DisplayAttribute[];
- return attrs.Length > ? attrs[].Description : enumValue.ToString();
- }
- }
- }
二、解决方案
1、状态码(模块化区分)
- /// <summary>
- /// 上传状态
- /// </summary>
- public enum UploadState
- {
- [Description("上传失败")]
- UploadFailed = -,
- [Description("正在上传")]
- Uploading = ,
- [Description("上传成功")]
- UploadSuccess =
- }
方法
- /// <summary>
- /// 获取枚举的描述
- /// </summary>
- /// <param name="en">枚举</param>
- /// <returns>返回枚举的描述</returns>
- public static string GetDescription(Enum en)
- {
- Type type = en.GetType(); //获取类型
- MemberInfo[] memberInfos = type.GetMember(en.ToString()); //获取成员
- if (memberInfos!=null&&memberInfos.Length>)
- {
- DescriptionAttribute[] attrs = memberInfos[].GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[]; //获取描述特性
- if (attrs!=null&&attrs.Length>)
- {
- return attrs[].Description; //返回当前描述
- }
- }
- return en.ToString();
- }
调用代码
- EnumService.GetDescription(UploadState.UploadSuccess)
2、指定名称获取特性描述
一、C#获取特性(坑)的更多相关文章
- C# 使用表达式树获取特性的值
一.定义特性 /// <summary> /// 定义特性 /// </summary> [AttributeUsage(AttributeTargets.Field | At ...
- C# 通过反射获取特性的值
特性(Attribute)是用于在运行时传递程序中各种元素(比如类.方法.结构.枚举.组件等)的行为信息的声明性标签.您可以通过使用特性向程序添加声明性信息.一个声明性标签是通过放置在它所应用的元素前 ...
- c#获取特性DescriptionAttribute的值
int detailId = Convert.ToInt32(id); BillLoanApplyDetail model = _billLoadApplyDetail.GetBillLoanAppl ...
- MVC中获取模型属性的Range和StringLength验证特性设置
MVC中的客户端及服务端模型验证信息都以ModelMetadata类型作为承载,在获得属性的ModelMetadata之后(还不知道怎么获取ModelMetadata的童鞋请自行恶补),我们可以轻松得 ...
- .NET(C#):使用反射来获取枚举的名称、值和特性【转】
首先需要从内部了解一下枚举(Enumeration),相信许多人已经知道了,当我们声明一个这样的枚举类型: enumMyEnum { AAA, BBB, CCC } 背后的IL是这样的: .class ...
- .NET(C#):使用反射来获取枚举的名称、值和特性
首先需要从内部了解一下枚举(Enumeration),相信许多人已经知道了,当我们声明一个这样的枚举类型: enum MyEnum { AAA, BBB, CCC } 背后的IL是这样的: .clas ...
- JavaScript特性(attribute)、属性(property)和样式(style)
最近在研读一本巨著<JavaScript忍者秘籍>,里面有一篇文章提到了这3个概念. 书中的源码可以在此下载.我将源码放到了线上,如果不想下载,可以直接访问在线网址,修改页面名就能访问到相 ...
- [C#] C# 知识回顾 - 特性 Attribute
C# 知识回顾 - 特性 Attribute [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5911289.html 目录 特性简介 使用特性 特性 ...
- 深入学习jQuery特性操作
× 目录 [1]获取特性 [2]设置特性 [3]删除特性 前面的话 每个元素都有一个或者多个特性,这些特性的用途就是给出相应元素或者其内容的附加信息.操作特性的DOM方法主要有3个:getAttrib ...
随机推荐
- 解决安装mysql-connector-odbc-5.3.2 错误1918……不能加载安装或转换器库……的BUG
还是在虚拟机Windows Server 2003上安装mysql-connector-odbc-5.3.2,装着装着就报错了,大致是“错误1918……不能加载安装或转换器库……”,问我Retry,I ...
- 共享OrCAD9.2pSpice9.2+multisim下载地址
http://pan.baidu.com/s/1dDcfiH7ewb9绿色版,解压后即可用!http://pan.baidu.com/s/1kTG43WFMultisim v11绿色版.7zhttp: ...
- 032:DTL常用过滤器(1)
为什么需要过滤器: 在DTL中,不支持函数的调用形式‘()’,因此不能给函数传递参数,这将有很大的局限性:而过滤器其实就是一个函数,可以对需要处理的参数进行处理,并且还可以额外接受一个参数(也就是说: ...
- Vue项目【饿了么App】mock数据【data.json】
1.前后端分离式开发,约定好数据字段接口! 2.前端mock静态数据,开发完毕后,与后端进行数据联调! 3.vue.config.js 配置 devServer const appData = req ...
- redis测试
1,安装redis软件 2,引入redis jar包 3,案例 package test; import java.util.List; import redis.clients.jedis.Jedi ...
- hibernate插入数据测试无异常,但数据库没有数据
解决方法: spring test测试默认会将事务回滚,如果想阻止spring transactional回滚,在test方法上加注解@Rollback(false)即可. Hibernate hql ...
- MapGIS IGServer for java
但是安装完之后,服务里面没有找到igserver服务 IGServer SManager cxf 怎么会找不到类呢?是服务映射出了问题,所以目录找不到.所以怎么配置目录呢?是在xml还是环境变量,还是 ...
- 在成为测试大牛的路上,我推荐BestTest
BestTest-Python自动化测试9月份班开始招生啦! 网络+现场同步进行,课程新升级,web自动化+接口自动化双管齐下,一线互联网测试开发工程师带你在自动化的世界里自由翱翔! 推荐优惠多多,欢 ...
- HihoCoder - 1104 Suzhou Adventure (树上背包)
题目:https://vjudge.net/contest/323605#problem/D 题意:给你一棵n个点的树,1点出发,然后规定k个点必须去,每个点上有一个权值,要走m个点,问最大权值是多少 ...
- Apache检查配置文件语法
Windows环境:httpd -t或者: httpd.exe -w -t -f "C:\Apache2.2\conf\httpd.conf" -d "C:\Apache ...