java+enum+键值对,c#枚举 获取枚举键值对、描述等

using System;

using System.Collections.Generic;

using System.Collections.Specialized;

using System.ComponentModel;

using System.Linq;

using System.Reflection;

using System.Text;

using System.Threading.Tasks;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Dictionary dic1 = GetEnumItemDesc(typeof(Days));

foreach (string key in dic1.Keys)

{

Console.WriteLine(key + ":{0}", dic1[key]);

}

Dictionary dic = GetEnumItemValueDesc(typeof(Days));

foreach (string key in dic.Keys)

{

Console.WriteLine(key + ":{0}", dic[key]);

}

Console.WriteLine(string.Format(Days.Sunday.ToString() + ":{0}", GetEnumDesc(Days.Sunday)));

Console.WriteLine(string.Format("{0}", (int)Enum.Parse(typeof(Days), "Thursday", true)));

Console.ReadKey();

}

///

/// 获取枚举项描述信息 例如GetEnumDesc(Days.Sunday)

///

/// 枚举项 如Days.Sunday

///

public static string GetEnumDesc(Enum en)

{

Type type = en.GetType();

MemberInfo[] memInfo = type.GetMember(en.ToString());

if (memInfo != null && memInfo.Length > 0)

{

object[] attrs = memInfo[0].GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);

if (attrs != null && attrs.Length > 0)

return ((DescriptionAttribute)attrs[0]).Description;

}

return en.ToString();

}

///

/// 获取枚举项+描述

///

///Type,该参数的格式为typeof(需要读的枚举类型)

///键值对

public static Dictionary GetEnumItemDesc(Type enumType)

{

Dictionary dic = new Dictionary();

FieldInfo[] fieldinfos = enumType.GetFields();

foreach (FieldInfo field in fieldinfos)

{

if (field.FieldType.IsEnum)

{

Object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);

dic.Add(field.Name, ((DescriptionAttribute)objs[0]).Description);

}

}

return dic;

}

///

/// 获取枚举值+描述

///

///Type,该参数的格式为typeof(需要读的枚举类型)

///键值对

public static Dictionary GetEnumItemValueDesc(Type enumType)

{

Dictionary dic = new Dictionary();

Type typeDescription = typeof(DescriptionAttribute);

FieldInfo[] fields = enumType.GetFields();

string strText = string.Empty;

string strValue = string.Empty;

foreach (FieldInfo field in fields)

{

if (field.FieldType.IsEnum)

{

strValue = ((int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null)).ToString();

object[] arr = field.GetCustomAttributes(typeDescription, true);

if (arr.Length > 0)

{

DescriptionAttribute aa = (DescriptionAttribute)arr[0];

strText = aa.Description;

}

else

{

strText = field.Name;

}

dic.Add(strValue, strText);

}

}

return dic;

}

}

public enum Days

{

[Description("星期天")]

Sunday,

[Description("星期一")]

Monday,

[Description("星期二")]

Tuesday,

[Description("星期三")]

Wednesday,

[Description("星期四")]

Thursday,

[Description("星期五")]

Friday,

[Description("星期六")]

Saturday

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值