日期:2014-05-18  浏览次数:20752 次

关于枚举型的操作(高手请进)
我定义了一个枚举类型,每个值有其自己的含义,现在要取其对应的含义?
例如

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