我有一个enum的字符串表示。
string val = "namespace_name.enum_name";
我可以使用它来获取枚举类型。
Type myType = Type.GetType(val);
现在我看到myType.Name = actual_enum_name和其他信息,很好。 我试图使用这些信息获取实际的枚举值,但没有成功。
我尝试过使用Enum.Getvalues,但是我在将myType,即System.Type转换为EnumType时遇到了困难,这是Enum.Getvalues需要的(?)。
我试图根据获得的信息实际创建一个Enum对象并被卡住。
如何从此处获取该枚举的实际字段(成员列表)?
答案 0 :(得分:6)
这应该按原样运行,不需要转换。 Enum.GetValues()
需要Type
。以下代码有效。
namespace enumtest
{
public enum Mine
{
data1,
data2
}
class Program
{
static void Main(string[] args)
{
Type myenum = Type.GetType("enumtest.Mine");
foreach (var curr in Enum.GetValues(myenum))
{
Console.WriteLine(curr.ToString());
}
}
}
}
这允许您构造枚举值的实例,如下所示:
namespace enumtest
{
public enum Mine
{
data1,
data2
}
class Program
{
static void Main(string[] args)
{
Type myenum = Type.GetType("enumtest.Mine");
// Let's create an instance now
var values = Enum.GetValues(myenum);
var firstValue = values.GetValue(0);
Mine enumInstance = (Mine)Enum.Parse(myenum, firstValue.ToString());
Console.WriteLine("I have an instance of the enum! {0}", enumInstance);
}
}
}
答案 1 :(得分:0)
假设我有一个枚举ContactNumberType
然后使用
string[] names = Enum.GetValues(typeof(ContactNumberType));
因为GetValues()
方法返回一个数组