您的位置:首页 > 编程语言 > ASP

asp.net通过反射获取类中定义的枚举

2011-12-07 15:57 274 查看
这里需要说明一点的是,枚举定义在一个类中,如:
namespace TestObj.Common.Enum
{
public class EnumHelper
{
/// <summary>
/// 文件类型
/// </summary>
public enum DocType
{
Doc = 1,
XLS = 2,
PPT = 3,
PDF = 4,
TXT = 5,
HTML = 6,
未知 = 99
}
}
}


这时候,在某种想通过DocType字符串来遍历该枚举,则需要用到反射:

//TestObj.Common是一个程序集
Assembly assem = Assembly.Load("TestObj.Common");
Type type = assem.GetType("TestObj.Common.Enum.EnumHelper+"+"DocType");
foreach (int value in Enum.GetValues(type))
{
ListItem item = new ListItem(Enum.GetName(type, value), value.ToString());
}


//关键就在这里

Type type = assem.GetType("TestObj.Common.Enum.EnumHelper
+ " + "DocType");//这里是+号而不是 . (点)

这就是与普通枚举直接声明在命名空间中 的区别,如果直接声明在命名空间中,则直接写即可,如:

assem.GetType("TestObj.Common.Enum.DocType");

这个也是今天工作时才发现的,经过多次调试查看数据分析发现的。在此记录,方便查阅!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: