将字符串值作为类型传递

本文关键字:类型 字符串 | 更新日期: 2023-09-27 18:18:17

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

我使用像下面这样的foreach来完成。

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

由于我有许多不同的枚举,所以我试图创建一种方法来实现这一点,而不需要使用许多if语句来检查枚举类型。

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

是否有一种方法可以传递字符串的值作为foreach中的枚举类型?

谢谢

将字符串值作为类型传递

您要找的是Type.GetType

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

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

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

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

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