【发布时间】:2013-04-06 20:51:02
【问题描述】:
当我在运行时拥有枚举的 System.Type 并检查 BaseType 是否为 System.Enum 时,我无法确定如何准确地创建枚举实例,我的值是与项目匹配的 int 值在神秘的枚举中。
我目前的代码就是上面描述的逻辑,如下图。
if (Type.GetType(type) != null)
{
if (Type.GetType(type).BaseType.ToString() == "System.Enum")
{
return ???;
}
}
过去使用 Enums 时,我总是在代码时知道我要解析哪个枚举,但在这种情况下,我很困惑,并且几乎没有运气以谷歌友好的方式表达我的问题......我通常会这样做像
(SomeEnumType)int
但由于我在代码时不知道 EnumType,我该如何实现相同的目标?
【问题讨论】:
-
在“return ???”之后你想做什么有点令人困惑,为什么在这种情况下你需要反思。您仍然可以使用相同的 (SomeEnumType)type 将类型转换为 SomeEnumType。
-
问题是我不知道哪个枚举是可能的,在运行时可能是任何.. 返回???类似于 [code] Enum.Parse(Type.GetType(type), ob);[/code]
-
这一行
Type.GetType(type).BaseType.ToString() == "System.Enum"告诉我对象type已经具有您的SomeEnumType的类型,那么为什么需要将它从SomeEnumType转换为SomeEnumType?您能否提供更多背景信息,说明您想通过此实现什么目标? -
是的,实际上这只是成功了,回答了我自己的问题.. 仅供参考,尽管我使用的是包含系统的一行数据。枚举的类型字符串和一个 int 形式的值使用该值创建所需的任何枚举的实例。不过感谢您的帮助:)
标签: c# reflection enums