大家帮忙看一下:
一个文本框,接收代码,代码风格为C#,解析关键字:+,-,*,/,=,(,),if,else,while,for,switch,case.
在textbox里面输入一段C#代码,执行出来!
谢谢!

解决方案 »

  1.   

    参考如下代码:
    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");
        }
    }
      

  2.   

    开个进程调用csc.exe把输入的代码编译成dll,然后反射~ 试试吧~ 我也不知道行不行~ 哈
      

  3.   

    反射也不是万能灵丹啊。这不就成了一个C#编辑器了么?之后还要编译,C#代码需要调用编译器编译后才能执行。其它类库如何引用?如果是非常非常简单的代码也许还行,但也只能做到‘模仿运行’,比如用户输入if else,你的程序检测到此字符,然后在代码执行一段if else.
    就是这样工作量也非常大。感觉不太可能100%输入什么就执行什么。那就是另一个.NET FRAMEWORK了,就用不着用VS了。