(double)i,至于你说的那种方法对于c#是不可能的

解决方案 »

  1.   

    需要反射。不过这么做没有意义,你还是得返回object。
      

  2.   

    或者用一种简单的方法
     string s = "double";
            if(s.ToLower().Contains("double"))
                Convert.ToDouble(i);
      

  3.   

    CodeDom 啊,还有现在.net 4.5里的Roslyn
      

  4.   

    Roslyn是编译期的API哦。这一点一开始我也没有意识到。足够让人失望。
      

  5.   

    加个Javascript.Net Engine吧,Codeplex上搜搜看。
      

  6.   


    ScriptEngine 是 Roslyn 提供的呀。
    下面这篇文章有点类似:
    http://www.codeproject.com/Articles/338088/Using-Roslyn-ScriptEngine-for-a-ValueConverter-to
      

  7.   

    不过,就像你说的无论怎么样拿到的还是object
      

  8.   

    反射呀,
    Type t=Type.GetType(/*你的类型名称*/)
    有了这个,什么实例化,函数调用都属于后续之作
      

  9.   

    switch
    if else判断s到底是什么,反正类型可以枚举全
      

  10.   

    请参看System.Convert.ChangeType,明白了吗?不管你怎么转,最后你拿到的还是Object,就算给你想要的类型,你的代码也没法处理。
           
             // 摘要:
            //     返回一个指定类型的对象,该对象的值等效于指定的对象。
            //
            // 参数:
            //   value:
            //     用于实现 System.IConvertible 接口的对象。
            //
            //   conversionType:
            //     要返回的对象的类型。
            //
            // 返回结果:
            //     一个类型为 conversionType 的对象,其值等效于 value。- 或 -如果 value 是 null,且 conversionType
            //     不是值类型,则为 null 引用(Visual Basic 中为 Nothing)。
            //
            // 异常:
            //   System.InvalidCastException:
            //     不支持此转换。- 或 -value 为 null,而且 conversionType 是值类型。- 或 -value 不实现 System.IConvertible
            //     接口。
            //
            //   System.FormatException:
            //     conversionType 无法识别value的格式。
            //
            //   System.OverflowException:
            //     value 表示的数字超出 conversionType 的范围。
            //
            //   System.ArgumentNullException:
            //     conversionType 为 null。
            public static object ChangeType(object value, Type conversionType);
      

  11.   

    转换之前加判断,用double定义一个数,然后GetType().ToString(),然后对比字符串,如果字符串相等则变成相应类型
      

  12.   

    楼主可以试试我的方法:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Reflection;namespace test
    {
        class Program
        {
            static void Main(string[] args)
            {
                //目标类型字符串
                string s = "System.Double";
                Type t = Type.GetType(s);
                int i = 4;
                //获取Parse方法
                MethodInfo method = t.GetMethod("Parse",new Type[] { typeof(string)});
                object[] parameters = new object[] { i.ToString() };            //调用方法,并传入参数,用一个object接收返回值
                object returnValue = method.Invoke(null, parameters);
                Console.WriteLine(returnValue);
                Console.ReadKey();
            }
        }
    }
      

  13.   

    可以将 string sss = "double d = (" + s +")i;";
    写到一个文件中,再粘出来就是
    double d = (double)i;
      

  14.   

    string s = "System.Double"; int i = 2;
                dynamic value = Convert.ChangeType(i, Type.GetType(s));
                value += 1.1;
                Console.WriteLine(value);
    试试dynamic
      

  15.   

    27的方法可行,dynamic这个类型没听说过,新东西吧