如果能够类似于js里的eval一样把一个字符串转换成C#语句,就能够带来很多方便。
例如,String a="Console.writeLine(\"这是一个转换过后运行的语句。\")";
如果能够直接运行字符串a里的语句就好了。
不知道有没有这种现在的方法,谢谢大家。

解决方案 »

  1.   

    可以的,看看C#连接SQL数据的代码就清楚了
      

  2.   

    using Microsoft.CSharp;
    using System.CodeDom.Compiler;
    using System.Reflection;private void button1_Click(object sender, EventArgs e)
    {
        ICodeCompiler vCodeCompiler = new CSharpCodeProvider().CreateCompiler();
        CompilerParameters vCompilerParameters = new CompilerParameters();
        vCompilerParameters.GenerateExecutable = false;
        vCompilerParameters.GenerateInMemory = true;
        string vSource = 
            "public class Temp\n" +
            "{\n" +
            "   public double Test(double A, double B)\n" +
            "   {\n" +
            "       return A / B;\n" +
            "   }\n" +
            "}\n";
        CompilerResults vCompilerResults =
            vCodeCompiler.CompileAssemblyFromSource(vCompilerParameters, vSource); 
        Assembly vAssembly = vCompilerResults.CompiledAssembly;
        object vTemp = vAssembly.CreateInstance("Temp");
        MethodInfo vTest = vTemp.GetType().GetMethod("Test");
        for (int i = 1; i < 100; i++)
        {
            object[] vParams = { 1, i };
            object vDouble = vTest.Invoke(vTemp, vParams);
            textBox1.AppendText(vDouble.ToString() + "\r\n");
        }
    }