我有一个枚举的字符串表示.
string val = "namespace_name.enum_name";
Run Code Online (Sandbox Code Playgroud)
我可以使用它来获取枚举类型.
Type myType = Type.GetType(val);
Run Code Online (Sandbox Code Playgroud)
现在我看到myType.Name = actual_enum_name和其他信息,很好.我试图使用此信息获取实际的枚举值,但没有成功.
我已经尝试过使用Enum.Getvalues,但是我在将myType,即System.Type转换为EnumType时遇到困难,这是Enum.Getvalues需要的(?).
我试图根据获得的信息实际创建一个Enum对象并被卡住.
如何从这里获得该枚举的实际字段(成员列表)?
这应该按原样工作,不需要转换.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());
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这允许您构造枚举值的实例,如下所示:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)