将字符串值作为类型传递

时间:2016-11-16 14:39:00

标签: c#

我有一些枚举,如:OneEnum,TwoEnum,ThreeEnum等。 根据用户的输入,我想打印相应枚举的内容。

我使用类似下面的foreach来做到这一点。

foreach(OneEnum i in Enum.GetValues(typeof(OneEnum)))
{
    Console.WriteLine("{0}", i);
}

由于我有许多不同的枚举,我试图创建一种方法来做到这一点,而没有很多if语句检查枚举类型。

在某些时候,我得到一个像enumType = "OneEnum"enumType = "TwoEnum"等字符串,这是枚举的类型。

有没有办法将字符串的值作为foreach中的枚举类型传递?

由于

2 个答案:

答案 0 :(得分:6)

您正在寻找Type.GetType

foreach(Enum i in Enum.GetValues(Type.GetType("Your.Namespace.OneEnum"))
{
    Console.WriteLine("{0}", i);
}

实例:http://rextester.com/KXFEX78943

答案 1 :(得分:1)

您可以通过反思获得类型:

foreach(Enum i in Enum.GetValues(Type.GetType(typeName)))
{
    Console.WriteLine("{0}", i);
}

您必须确保typeName是一个程序集限定名称。