天天看點

将字元串轉化為某種類型

   //将字元串轉化為type型.

    private object parse(string s, Type t)

    {

        //如果字元串是一個string,直接傳回.

        if (t.IsAssignableFrom(typeof(string))) return s;

        //如果字元串是一個數組,那麼将其解析為數組并傳回.

        if (t.IsArray) return parseArray(s, t);

        //構造并調用tpe的Parse方法.

        BindingFlags flags = BindingFlags.Static | BindingFlags.FlattenHierarchy | BindingFlags.IgnoreCase | BindingFlags.Public;

        MethodInfo parseMethod = t.GetMethod("Parse", flags, null, new Type[] { typeof(string) }, null);

        if (parseMethod != null && parseMethod.ReturnType == t)

        {

            return parseMethod.Invoke(null, new object[] { s });

        }

        else

            throw new ApplicationException("Can‘t parse " + t.FullName + " because it doesn‘t have a static Parse() method");

    }

    //将字元串轉化為某種類型的數組.

    private object[] parseArray(string s, Type arrayType)

        string[] strings = s.Split(new char[] { ‘,‘ });

        object[] result = new object[strings.Length];

        for (int i = 0; i < strings.Length; i++)

            result[i] = parse(strings[i], arrayType.GetElementType());

        return result;