.NET中的代码动态编译执行
2010-07-12 16:47
381 查看
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Reflection; using System.CodeDom.Compiler; using Microsoft.CSharp; namespace WindowsFormsApplication5 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //动态执行方法(c#版本): public object EvalCSharp(string expression) { CodeDomProvider provider = new CSharpCodeProvider(); CompilerParameters cp = new CompilerParameters(); MethodInfo mi; StringBuilder sb = new StringBuilder(); sb.AppendLine("using System;"); sb.AppendLine("using Microsoft.CSharp;"); sb.AppendLine("public class Mode"); sb.AppendLine("{"); sb.AppendLine(" public static int Func(){"); sb.AppendLine(" return " + expression + ";"); sb.AppendLine(" }"); sb.AppendLine("private static int GetData(){return 100;"); sb.AppendLine(" }"); sb.AppendLine("}"); cp.ReferencedAssemblies.Add("System.dll"); cp.GenerateExecutable = false; cp.GenerateInMemory = true; string code = sb.ToString(); CompilerResults cr = provider.CompileAssemblyFromSource(cp, code); if (cr.Errors.HasErrors) { return null; } else { Assembly a = cr.CompiledAssembly; Type t = a.GetType("Mode"); mi = t.GetMethod("Func", BindingFlags.Static | BindingFlags.Public); return mi.Invoke(null, new object[0]); } } private void button1_Click(object sender, EventArgs e) { //调用: object csharp1 = EvalCSharp("GetData()"); object csharp2 = EvalCSharp("1 + 1 + 3"); this.Text = csharp1.ToString() ; this.label1.Text = csharp2.ToString(); } } }
相关文章推荐
- IronPython系列:使用CodeDom动态地编译执行代码
- C#动态编译代码并执行
- C#动态编译并执行代码
- 如何用C#动态编译、执行代码
- c# EVAL 动态 执行 代码 .net 执...
- 如何用C#动态编译、执行代码
- 如何用C#动态编译、执行代码
- 如何用C#动态编译、执行代码
- java 动态编译与用Rhino引擎执行javascript代码
- 整理一下Java动态编译Java代码,并在加载到内存中然后执行类中方法的api的介绍
- 如何用C#动态编译、执行代码例程(2)
- 运行时动态将字符串编译为C#可执行代码
- 如何用C#动态编译、执行代码
- 利用javax.tools动态编译执行java代码
- 如何用C#动态编译、执行代码
- 如何用C#动态编译、执行代码
- 动态编译执行C#代码
- 如何用C#动态编译、执行代码[转]
- 如何用C#动态编译应用程序来执行自定义代码
- C#代码动态编译、动态执行、动态调试