【发布时间】:2020-12-27 15:22:46
【问题描述】:
我有一个类似的枚举
{
e1 = 0,
e2 = 1,
e3 = 2,
}
和其他枚举,如:
enum MyOtherEnum
{
oe1 = 0,
oe2 = 1,
oe3 = 2,
}
和其他一些枚举。我将json反序列化为对象,对象成员之一是MyEnum列表或MyOtherEnum列表。
无论枚举类型如何,我都需要在列表上执行 foreach
我检查了这个成员是否是一个列表,并尝试在这个列表上执行foreach,如下所示:
var itemValue = item.GetValue(json);
if (IsList(itemValue))
{
foreach (var listItem in (IEnumerable<dynamic>)itemValue)
{
//do something
}
}
我尝试过的:
-
强制转换为以下列表:动态、对象、字符串或 int 不起作用。它总是需要转换为
IList<MyEnum> -
通过使用从列表中获取元素的类型
Type type = itemValue.GetType().GetGenericArguments()[0];但编译器显示错误
type 是 var 但与 Type 一样使用
我知道一些解决方法是使用字符串而不是枚举,但我想避免它。
提前致谢。
【问题讨论】:
标签: c# .net reflection foreach enums