大家帮忙看一下:
一个文本框,接收代码,代码风格为C#,解析关键字:+,-,*,/,=,(,),if,else,while,for,switch,case.
在textbox里面输入一段C#代码,执行出来!
谢谢!
一个文本框,接收代码,代码风格为C#,解析关键字:+,-,*,/,=,(,),if,else,while,for,switch,case.
在textbox里面输入一段C#代码,执行出来!
谢谢!
调试欢乐多
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");
}
}
就是这样工作量也非常大。感觉不太可能100%输入什么就执行什么。那就是另一个.NET FRAMEWORK了,就用不着用VS了。