我有一个System.Type type
变量,我检查了type.IsEnum
并返回了true
。
假设实际上这个type
变量是Direction
枚举,其中包含以下枚举:Left, Up, Down, Right
但前面的代码只知道它是枚举。它可能是其他内容取决于type
,但我们保证它是.IsEnum
现在,我如何创建Direction
代表的type
类型的新变量?说,我希望它的值来自整数0,它应该代表Left
。
答案 0 :(得分:0)
如果你想检查你得到的枚举是Direction
类型,然后对它做一些事情,你可以在类型上使用IsAssignableFrom
方法检查,如示例中所示下面:
enum Direction
{
Left = 0,
Up,
Down,
Right
}
public static void DoSomethingIfDirection(object item)
{
if (item != null)
{
Type type = item.GetType();
if (type.IsEnum && typeof(Direction).IsAssignableFrom(type))
{
// Do something
Console.WriteLine((Direction)item);
}
}
}
public static void Main(params string[] args)
{
DoSomethingIfDirection("Hello");
DoSomethingIfDirection("Left");
DoSomethingIfDirection(Direction.Left);
}
答案 1 :(得分:0)
Enum.ToObject(Type,object)
解决了这个问题。
例如,在我确认type
是System.Enum
后,我可以(System.Enum)Enum.ToObject(type,0)
。
令人困惑的是,尽管名称为Enum.ToObject
,但此方法将对象转换为枚举而不是枚举为对象。但也许名称是指这种方法的返回类型object
。