本博客里所有注释和翻译都是本人的理解,如有不对请指出。
创建自己的枚举
public enum WhatWayTagToMove
{
[Description("WayPoint1_Blue")] WayPoint1_Blue = 0,
[Description("WayPoint1_Red")] WayPoint1_Red = 1
}
在你的类中导入四个命名空间
using System.Collections.Specialized;
using System.ComponentModel;
using System.Reflection;
using System;
然后写两个方法
public static NameValueCollection ConvertEnumDescriptionValue()
{
//创建键值对儿集合
NameValueCollection nvc = new NameValueCollection();
//创建一个类型归属(DescriptionAttribute)实例
Type type = typeof(DescriptionAttribute);
//使用反射将枚举中的每一个‘例’字段拿出来
foreach (FieldInfo time in typeof(WhatWayTagToMove).GetFields())
{
//获取每一个‘例’的类型归属
object[] arr = time.GetCustomAttributes(type, true);
if (arr.Length > 0)
{
//将在枚举类中申明的名字和枚举分开存入键值对
nvc.Add(time.Name, ((DescriptionAttribute)arr[0]).Description);
}
}
//返回集合
return nvc;
}
//这个方法是用来将枚举转化为字符串
public static string StrWay(WhatWayTagToMove way)
{
//按传入的枚举值返回一个与枚举值相同的字符串
//这里需要一个强转来将输入的枚举类型转换为int类型
return ConvertEnumDescriptionValue()[(int)way];
}
static void Main(string[] args)
{
WhatWayTagToMove wahtWay;
string way = StrWay(wahtWay);
}