日期:2014-05-17  浏览次数:20568 次

【分享贴】将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