private void button1_Click(object sender, EventArgs e)
    {
        double d = Convert<double>("1234");
        Color c = Convert<Color>("Yellow");
    }
    // 方法一
    static T Convert<T>(string str)
    {
        TypeConverter converter = TypeDescriptor.GetConverter( typeof(T) );
        if (converter != null && converter.CanConvertFrom(typeof(string)))
        {
            return (T)converter.ConvertFrom(str);
        }
        return default(T);
    }
    // 方法二,如果传入string typeName,可以Type targetType = Type.GetType( typeName )
    static object Convert(Type targetType, string str)
    {
        TypeConverter converter = TypeDescriptor.GetConverter(targetType);
        if( converter != null && converter.CanConvertFrom( typeof(string) ))
        {
            return converter.ConvertFrom( str );
        }
        return null;
    }

解决方案 »

  1.   


    因为类型也不知道,尤其是只能用string来描述类型,我卡就卡在这了
    但仍然十分感谢你的代码
      

  2.   

    你能“用string来描述类型”怎么会“类型也不知道”?
      

  3.   

             string str = "int";
             string p = "12.3";
                
               if (str =="decimal")
                    Console.WriteLine(Convert.ToDecimal( p));
                else if(str=="int")
                    Console.WriteLine(Convert.ToInt32(p));
                
                Console.Read();
      

  4.   

    用最笨的方式吧,如下参数string type
    参数string valueif(type.trim() == "double")
      {
         double v;
         if(double.Trypars(value,out v))
           return (object)v;
      }
    else if(...)
    {
    ...
      

  5.   

    刚才的返回值 为object类型的
    语言用的是c#