我正在尝试编写一个简单的助手方法,该方法返回该枚举的指定字符串表示的基础枚举!这是我现在正在写的代码
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;
}
我正在使用一些相同的扩展方法,请查看
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_。