从字符串返回基础枚举值时出现错误类型或命名空间名称';enumType';找不到

本文关键字:命名空间 类型 找不到 enumType 错误 返回 字符串 枚举 | 更新日期: 2023-09-27 18:20:23

我正在尝试编写一个简单的助手方法,该方法返回该枚举的指定字符串表示的基础枚举!这是我现在正在写的代码

  public static dynamic GetEnum(Type enumType, string EnumValue)
    {
        return (enumType)Enum.Parse(enumType, EnumValue);
    }

我得到

错误1找不到类型或命名空间名称"enumType"(分别为缺少using指令或程序集引用?)

编辑时间:这是完成的方法,建议如下:

    public static EnumType GetEnum<EnumType>(string EnumValue) where EnumType : struct
{
    EnumType result;
    Enum.TryParse<EnumType>(EnumValue, out result);
    return result;
}

从字符串返回基础枚举值时出现错误类型或命名空间名称';enumType';找不到

我正在使用一些相同的扩展方法,请查看

public static T ParseEnum<T>(this string valueToParse) where T : struct, IConvertible
        {
            return EnumParse<T>(valueToParse);
        }
        private static T EnumParse<T>(object valueToParse) where T : struct, IConvertible
        {
            T defaultValue = default(T);
            if (valueToParse != null && Enum.IsDefined(typeof(T), valueToParse))
            {
                try
                {
                    return (T)valueToParse;
                }
                catch (Exception e)
                {
                    Enum.TryParse<T>(valueToParse.ToString(), out defaultValue);
                }
            }
            return defaultValue;
        }

您不能强制转换为Type实例,但是:您不需要。在dynamic的情况下,没有什么可做的:值已经是装箱的EnumValue:

return Enum.Parse(enumType, EnumValue);

然而,泛型可能是更好的方法。您可能需要查看现有的TryParse<T>方法。这将是,而不是使用Type。CCD_ 6和CCD_。