-
2016-12-16 14:40:54
首先 设置一个枚举类型
public enum TimeOfDay
{
[Description("上午")]
Morning = 1,
[Description("中午")]
Afternoon = 2,
[Description("晚上")]
Evening = 3,
};
1,2,3 为对于的value
morning afternoon evening为name
public enum TimeOfDay
{
[Description("上午")]
Morning,
[Description("中午")]
Afternoon,
[Description("晚上")]
Evening,
};//此时从0开始 ,每次递增+1.可以通过Morning=1来更改枚举初始值。
注意 使用description需要引用 using System.ComponentModel;
typeof(TimeOfDay).GetEnumName(Value); 可以通过value 获取到name
typeof(TimeOfDay).GetField(name);可以通过name获取到对应的枚举信息
fieldinfo.GetCustomAttribute(typeof(DescriptionAttribute), false);用于指定成员的指定类型的自定义特性(false为不检查其上级)以得到description
以下为示例代码:
public enum TimeOfDay { [Description("上午")] Moning = 1, [Description("中午")] Afternoon = 2, [Description("晚上")] Evening = 3, }; /// <summary> /// 得到enum的属性值 /// </summary> /// <returns></returns> public static void GetDescriptionByValue(int EnumValue) { string name = typeof(TimeOfDay).GetEnumName(EnumValue); FieldInfo fieldinfo = typeof(TimeOfDay).GetField(name); Object obj = fieldinfo.GetCustomAttribute(typeof(DescriptionAttribute), false); DescriptionAttribute ds = (DescriptionAttribute)obj; Console.WriteLine(ds.Description); Console.ReadLine(); }
运行:public static void Main() { GetDescriptionByValue(1); }
注意引用:using System; using System.ComponentModel; using System.Reflection;
得到结果:上午
更多相关内容 -
js获取页面description的方法
2020-10-24 05:18:39主要介绍了js获取页面description的方法,涉及javascript操作页面元素的相关技巧,需要的朋友可以参考下 -
枚举操作(从枚举中获取Description,根据Description获取枚举,将枚举转换为ArrayList)工具
2015-11-16 09:55:12/// 从枚举中获取Description /// 说明: /// 单元测试-->通过 /// /// 需要获取枚举描述的枚举 /// 描述内容 public static string GetDescription(this Enum enumName) { string _description = string....
单元测试代码:using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Reflection; namespace CSharpUtilHelpV2 { /// <summary> /// 基于.NET 2.0的枚举工具类 /// </summary> public static class EnumToolV2 { /// <summary> /// 从枚举中获取Description /// 说明: /// 单元测试-->通过 /// </summary> /// <param name="enumName">需要获取枚举描述的枚举</param> /// <returns>描述内容</returns> public static string GetDescription(this Enum enumName) { string _description = string.Empty; FieldInfo _fieldInfo = enumName.GetType().GetField(enumName.ToString()); DescriptionAttribute[] _attributes = _fieldInfo.GetDescriptAttr(); if (_attributes != null && _attributes.Length > 0) _description = _attributes[0].Description; else _description = enumName.ToString(); return _description; } /// <summary> /// 获取字段Description /// </summary> /// <param name="fieldInfo">FieldInfo</param> /// <returns>DescriptionAttribute[] </returns> public static DescriptionAttribute[] GetDescriptAttr(this FieldInfo fieldInfo) { if (fieldInfo != null) { return (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false); } return null; } /// <summary> /// 根据Description获取枚举 /// 说明: /// 单元测试-->通过 /// </summary> /// <typeparam name="T">枚举类型</typeparam> /// <param name="description">枚举描述</param> /// <returns>枚举</returns> public static T GetEnumName<T>(string description) { Type _type = typeof(T); foreach (FieldInfo field in _type.GetFields()) { DescriptionAttribute[] _curDesc = field.GetDescriptAttr(); if (_curDesc != null && _curDesc.Length > 0) { if (_curDesc[0].Description == description) return (T)field.GetValue(null); } else { if (field.Name == description) return (T)field.GetValue(null); } } throw new ArgumentException(string.Format("{0} 未能找到对应的枚举.", description), "Description"); } /// <summary> /// 将枚举转换为ArrayList /// 说明: /// 若不是枚举类型,则返回NULL /// 单元测试-->通过 /// </summary> /// <param name="type">枚举类型</param> /// <returns>ArrayList</returns> public static ArrayList ToArrayList(this Type type) { if (type.IsEnum) { ArrayList _array = new ArrayList(); Array _enumValues = Enum.GetValues(type); foreach (Enum value in _enumValues) { _array.Add(new KeyValuePair<Enum, string>(value, GetDescription(value))); } return _array; } return null; } } }
using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Collections; using System.Collections.Generic; namespace CSharpUtilHelpV2.Test { public enum TestEnum { [System.ComponentModel.Description("第一")] One, [System.ComponentModel.Description("第二")] Two, [System.ComponentModel.Description("第三")] Three, [System.ComponentModel.Description("第五")] Five, [System.ComponentModel.Description("全部")] All } [TestClass()] public class EnumToolV2Test { [TestMethod()] public void GetDescriptionTest() { string _actual = TestEnum.Five.GetDescription(); string _expected = "第五"; Assert.AreEqual(_expected, _actual); } [TestMethod()] public void GetEnumNameTest() { TestEnum _actual = EnumToolV2.GetEnumName<TestEnum>("第五"); TestEnum _expected = TestEnum.Five; Assert.AreEqual<TestEnum>(_expected, _actual); } [TestMethod()] public void ToArrayListTest() { ArrayList _actual = EnumToolV2.ToArrayList(typeof(TestEnum)); ArrayList _expected = new ArrayList(5); _expected.Add(new KeyValuePair<Enum, string>(TestEnum.One, "第一")); _expected.Add(new KeyValuePair<Enum, string>(TestEnum.Two, "第二")); _expected.Add(new KeyValuePair<Enum, string>(TestEnum.Three, "第三")); _expected.Add(new KeyValuePair<Enum, string>(TestEnum.Five, "第五")); _expected.Add(new KeyValuePair<Enum, string>(TestEnum.All, "全部")); CollectionAssert.AreEqual(_expected, _actual); } } }
-
C# 获取枚举类型描述Description值
2019-10-20 18:24:47代码 /// <summary> /// 获取当前枚举描述 /// </summary> /// <param name="enumValue"></param> /// <returns></returns> public static stri...代码
/// <summary> /// 获取当前枚举描述 /// </summary> /// <param name="enumValue"></param> /// <returns></returns> public static string GetEnumDescription(this Enum enumValue) { try { Type type = enumValue.GetType(); MemberInfo[] memInfo = type.GetMember(enumValue.ToString()); if (null != memInfo && memInfo.Length > 0) { object[] attrs = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); if (null != attrs && attrs.Length > 0) return ((DescriptionAttribute)attrs[0]).Description; } return enumValue.ToString(); } catch (Exception) { return "Unknown"; } }
调用
class Program { static void Main(string[] args) { var Moel = new Model() { Name="张三",OrderBy=OrderType.News}; var res = Moel.OrderBy.GetEnumDescription(); Console.WriteLine(res); Console.ReadKey(); } } public class Model { public string Name { get; set; } public OrderType OrderBy { get; set; } } /// <summary> /// 排序类型, /// </summary> public enum OrderType { /// <summary> /// 最新排序 /// </summary> [Description("id desc")] News, /// <summary> /// 热门排序 /// </summary> [Description("viewCount desc")] Hot, }
结果
-
C# 获取枚举中的【Description】属性值
2021-01-05 10:50:50//获取描述属性 if (objs == null || objs.Length == 0) //当描述属性没有时,直接返回名称 return value; DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0]; return ...这是一个我个人的记录笔记,实际代码也是我从网上找的。
public enum PayToFreeEnqueteStatus { [Description("登録済み")] Registered = 0, [Description("未加入")] DisSubscribed = 1 }
public string GetEnumDescription(Enum enumValue) { string value = enumValue.ToString(); FieldInfo field = enumValue.GetType().GetField(value); object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false); //获取描述属性 if (objs == null || objs.Length == 0) //当描述属性没有时,直接返回名称 return value; DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0]; return descriptionAttribute.Description; } public static string GetEnumDescription2(Enum enumValue) { var field = enumValue.GetType().GetField(enumValue.ToString()); var objs = field.GetCustomAttribute(typeof(DescriptionAttribute)); var descriptionAttribute = (DescriptionAttribute)objs; return descriptionAttribute.Description; }
👇就是调用:
string status = GetEnumDescription(PayToFreeEnqueteStatus.Registered);
同理,我们可以给枚举类型赋上其他类型的属性,比如
Obsolete
,在GetEnumDescription
方法里面将DescriptionAttribute
换成ObsoleteAttribute
,一样可以取到属性。 -
C# 特性Description的值的获取
2020-01-20 13:53:15public class dataE{ /// <summary> /// 企业名称 /// </summary> /// <returns></returns> [Description("企业名称")] public string Ent... -
java实现获取网站的keywords,description
2020-09-03 21:39:17主要介绍了java实现获取网站的keywords,description的相关资料,需要的朋友可以参考下 -
获取枚举常量的描述值Description
2018-03-29 11:03:02枚举 1.属于值类型,继承ValueType ...方法:Description是一个特性,继承自Attribute,Attribute中有方法GetCustomAttribute可以获取到特性实例(在这里是获取DescriptionAttribute的实例),Descrip... -
是否有属性/属性值,获取实体层描述,枚举描述,枚举英文获取枚举描述[Description(“xxx“)]
2021-07-06 14:29:57/// 获取属性描述 /// </summary> /// <param name="t"></param> /// <returns></returns> public static string GetDesc(this PropertyInfo t) { string des = (... -
xpath 获取meta里的keywords及description的方法
2020-02-09 21:21:17html中的head的meta元素中的keywords与description标签如下: <meta name="keywords" content="xxxx" >...xpath获取属性使用@属性名就行了,如 //meta[@name='keywords']/@content //m... -
uiautomator2 如何提取出description下面的内容
2020-09-23 00:23:30uiautomator2 如何提取出description下面的内容 如图所示 -
获取枚举类型的描述description
2016-11-17 11:59:35[Description("等待用户确认收货")] WaitConfirm = 2, /// /// 订单完成 /// [Description("订单完成")] Complete = 3 } public static class Util { /// /// 根据值得到中文备注 /// /// ... -
获取页面的description
2012-12-22 19:25:06var meta = pt.document.getElementsByTagName('meta'); var share_desc = ''; for(i in meta){ if(typeof meta[i].name!="undefined"&&meta[i].name.toLowerCase()=="description"){ share_desc = meta[i].cont -
[C#]枚举操作(从枚举中获取Description,根据Description获取枚举,将枚举转换为ArrayList)工具类
2014-12-17 11:42:26/// 从枚举中获取Description /// 说明: /// 单元测试-->通过 /// /// 需要获取枚举描述的枚举 /// 描述内容 public static string GetDescription( this Enum enumName) { string _... -
C# 获取属性的description总结
2011-10-09 16:58:00现有一个结构体public struct Desc { private byte val1; [Description("一个属性")] public byte des { get { return val1;...}获取Description代码:string str = ""; Desc... -
C# 获取 Enum 枚举的 Description 描述内容,根据 Description 获取枚举
2019-06-04 16:20:34参考:... 思路:通过反射获取枚举类的Field,再用 Field 获取 DescriptionAttribute 属性。反之亦然 // 枚举 public enum enumStudent { [Description("性别")] sex = 0, [Descripti... -
C#获取实体类属性名和值和DESCRIPTION值 | 遍历类对象
2013-11-21 13:57:35//获取实体类里面所有的名称、值、DESCRIPTION值 public string getProperties(T t) { string tStr = string.Empty; if (t == null) { return tStr; -
.NET获取枚举DescriptionAttribute描述信息性能改进的多种方法
2020-10-22 23:36:37主要介绍了.NET获取枚举DescriptionAttribute描述信息性能改进的多种方法 的相关资料,需要的朋友可以参考下 -
c# ENUM 通过Description得到Value
2016-12-20 16:34:29通过枚举类型的value或者name获取description 看。 public static string GetValueByDescription(string Ip) { string value = string.Empty; var AllNames = typeof(TimeOfDay) -
通过Java反射获取对象属性名及对应值
2019-10-13 18:39:25通过Java反射获取对象属性名及对应值 import lombok.Data; /** * @author wenhui * @description * @Date 2019/10/13 */ @Data public class Bean { private String userName; private String userId; ... -
织梦标签:列表页调用文章description标签的三种方法!
2019-02-22 10:00:42在用织梦dedecms系统时,用[field:description /]标签调取文章简介时,限制字数的方法有下面3种: 第一种方法: [field:description function='cn_substr(Html2text("@me")."...",80)'/]调用现成的cn_substr()... -
C# 获取枚举 Enum 变量值的 Description 属性
2011-05-11 12:56:00有些时候,某个方法的返回值是个枚举类型,...当前段UI获取到登陆方法的返回结果时,就需要告诉用户登录是否成功、什么原因失败的。如果直接使用 ToString() 方式直接返回枚举变量的名称,显然不合适。通常的做法是使 -
C#+Enum 枚举扩展方法获取name,value和Description
2018-02-11 19:25:51public enum ConvertDeliveryCode ... [System.ComponentModel.Description("9980")] 犬山 = 9980, [System.ComponentModel.Description("9981")] 关原 = 9981, [System.Compon... -
c#获取枚举所有项列表包含Description描述
2019-11-26 16:11:48public enum UserType { /// <summary> /// 后台管理 /// </summary> [Description("后台管理")] Manager = 1, /// <summary> /// 普通用户 ... -
cx_Oracle获取表列名
2018-05-07 19:50:24title = [i[0] for i in CURS.description] #将数据写入CSV文件 try: with open("table_name.csv",'w') as csvfile: writer = csv.writer(csvfile) writer.writerow(title) writer.writerows(data) except:... -
C# 设置及获取属性备注信息 Description
2019-10-25 12:01:041.设置 using System.ComponentModel; ...[Description("开始时间")] public string searchDateBeg { get; set; } [Description("结束时间")] public string searchDateEnd { get; set; } }... -
android 获取usb 设备信息
2018-08-20 13:43:311.用户需要获取usb 设备名,来判断是不是我方的打印机 2.代码 public String getProductName(){ byte[] rawDescs = mUsbDeviceConnection.getRawDescriptors(); String manufacturer = "", ... -
反射获取类的 属性名(name) 和值(value)
2018-08-02 18:14:43* @Description 根据属性名 获取值(value) * @param name * @param user * @return * @throws IllegalAccessException */ public static Object getFieldValueByName(String name, User user)...