【分享贴】将string转换成枚举的通用方法
小弟愚钝,不怎么会写代码,以前遇到要将string转化成枚举的时候,都是去遍历枚举进行字符串匹配来取得枚举,用的比较多的情况如:default.aspx?type=black,要在程序里通过以下方法取得black:
enum Color
{
red,
white,
black,
yellow
}
Color GetColorType(string s)
{
Color color = Color.red;
foreach(Color c in Enum.GetValues(typeof(Color)))
{
if(s == c)
{
color = c;
break;
}
}
}
所以,针对这种情况就必须遇到不同的枚举,就得写不同的foreach来实现此功能,甚是麻烦。
后来,动用了几十亿个细胞(小弟真是不才),才想了以下这一招通用函数来转换:
public static object EnumParse(Type type, object value, object defaultValue)
{
object obj = null;
try
{
obj = Enum.Parse(type, value.ToString());
}
catch
{
return defaultValue;
}
if (obj.ToString() == "0" || ConvertToInt(obj.ToString()) != 0)
return defaultValue;
else
return obj;
}
public static int ConvertToInt(string s)
{
try