【发布时间】:2011-08-10 11:22:04
【问题描述】:
如何使用反射设置枚举,
我的班级有枚举:
public enum LevelEnum
{
NONE,
CRF,
SRS,
HLD,
CDD,
CRS
};
在运行时我想将该枚举设置为 CDD,例如。
我该怎么做?
【问题讨论】:
-
提出你真正的问题,帮助你会容易得多。
如何使用反射设置枚举,
我的班级有枚举:
public enum LevelEnum
{
NONE,
CRF,
SRS,
HLD,
CDD,
CRS
};
在运行时我想将该枚举设置为 CDD,例如。
我该怎么做?
【问题讨论】:
尝试使用枚举类
LevelEnum s = (LevelEnum)Enum.Parse(typeof(LevelEnum), "CDD");
【讨论】:
LevelEnum 在即时代码中不可用,而只能通过反射,我该怎么办?
public class MyObject
{
public LevelEnum MyValue {get;set,};
}
var obj = new MyObject();
obj.GetType().GetProperty("MyValue").SetValue(LevelEnum.CDD, null);
【讨论】:
value = (LevelEnum)Enum.Parse(typeof(LevelEnum),"CDD");
所以基本上你只需解析与你希望分配给变量的枚举值相对应的字符串。如果字符串不是枚举的已定义成员,这将失败。你可以用Enum.IsDefined(typeof(LevelEnum),input);检查一下
【讨论】: