这里需要说明一点的是,枚举定义在一个类中,如:
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");
这个也是今天工作时才发现的,经过多次调试查看数据分析发现的。在此记录,方便查阅!