关于枚举型的操作(高手请进)
我定义了一个枚举类型,每个值有其自己的含义,现在要取其对应的含义?
例如
public enum state
{
[打开]
Open
[暂停]
Pause
[关闭]
Close
}
现在要根据state.Open取得对应的 "打开 ",应该怎么做?
------解决方案--------------------这不是枚举 是哈希表的结构啊HashTable。用Dictionary也可以啊
------解决方案--------------------int i=(int)state.Open;
------解决方案--------------------public enum state
{
//[打开]
Open
//[暂停]
Pause
//[关闭]
Close
}
public void Execute(state OpType)
{
if(OpType==state.Open)
{
//打开的代码
}
else if(OpType==state.Pause)
{
//暂停的代码
}
else if(OpType==state.Close)
{
//关闭的代码
}
}
------解决方案--------------------按楼上的意思应该是switch case吧?
------解决方案--------------------使用反射
using System;
using System.ComponentModel;
using System.Reflection;
public enum State
{
[Description( "打开 ")]
Open,
[Description( "暂停 ")]
Pause,
[Description( "关闭 ")]
Close
}
class TestEnum
{
static string GetEnumDescription(Enum e)
{
FieldInfo fi= e.GetType().GetField(e.ToString());
DescriptionAttribute[] attrs = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
return (attrs.Length> 0)?attrs[0].Description:e.ToString();
}
static void Main()
{
State s = State.Open;
Console.WriteLine(s);
Console.WriteLine(GetEnumDescription(s));
}
}
也参考
http://blogs.msdn.com/abhinaba/archive/2005/10/20/483000.aspx