我正在尝试编写一个简单的帮助器方法,该方法返回该枚举的指定字符串表示形式的基础枚举! 这是我目前编写的代码
public static dynamic GetEnum(Type enumType, string EnumValue)
{
return (enumType)Enum.Parse(enumType, EnumValue);
}
我正在
错误1类型或命名空间名称' enumType'无法找到(是 你错过了使用指令或程序集引用?)
编辑: 这是完成的方法,如下所示:
public static EnumType GetEnum<EnumType>(string EnumValue) where EnumType : struct
{
EnumType result;
Enum.TryParse<EnumType>(EnumValue, out result);
return result;
}
答案 0 :(得分:2)
我正在使用一些扩展方法,请看看
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;
}
答案 1 :(得分:1)
您无法转换为Type
实例,但是:您不需要。如果是dynamic
,则无需执行任何操作:值已经装箱EnumValue
:
return Enum.Parse(enumType, EnumValue);
但是,仿制药可能是一种更好的方法。您可能希望查看现有的TryParse<T>
方法。这将是而不是使用Type
。 <T>
和Type
不能很好地融合在一起。