c# - 在 C# 中使用反射创建具有字符串值的未知枚举实例

标签 c# reflection enums

当我在运行时拥有枚举的 System.Type 并检查了 BaseType 是否为 System.Enum 时,我在计算如何准确创建枚举实例时遇到了问题,我的值是一个与项目匹配的 int 值在神秘的枚举中。

到目前为止,我的代码只是上面描述的逻辑,如下所示。

        if (Type.GetType(type) != null)
        {
            if (Type.GetType(type).BaseType.ToString() == "System.Enum")
            {
                return ???;
            }
        }

在过去使用枚举时,我总是在代码时知道我正在尝试解析哪个枚举,但在这种情况下我很困惑,并且运气不好以谷歌友好的方式阐明我的问题......我通常会这样做像

(SomeEnumType)int

但由于我在代码时不知道 EnumType,我该如何实现同样的事情?

最佳答案

使用 ToObject Enum 类上的方法:

var enumValue = Enum.ToObject(type, value);

或者喜欢你提供的代码:

if (Type.GetType(type) != null)
{
    var enumType = Type.GetType(type);
    if (enumType.IsEnum)
    {
        return Enum.ToObject(enumType, value);
    }
}

关于c# - 在 C# 中使用反射创建具有字符串值的未知枚举实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15855881/

相关文章:

c# - 在 WinRT 中将 JSON 对象反序列化为运行时类型 (C#)

go - 通用函数来获取 Go 中任何结构的大小

java - 接口(interface)方法引用的注释信息

c++ - 为什么基类枚举不被继承?

c++ - 如何 std::map<enum class, std::string>?

f# - 在 F# 中将字节转换为枚举的实例

c# - 在 WCF 服务内部的集线器中连接 SignalR

C# - 如何检查 zip 文件是否已拆分?

java - 外界对tomcat服务器的思考

c# - 如何从触发器获取接触点?