using System;using System.CodeDom.Compiler;using Microsoft.CSharp;using System.Reflection;using System.Text;
namespace ConsoleApplication22{/// summary/// Class1 的摘要说明。/// /summaryclass Class1{/// summary/// 应用程序的主入口点。/// /summary[STAThread]static void Main(string[] args){//// TODO: 在此处添加代码以启动应用程序//int i = (int)Calc(1+2*3);Console.WriteLine(i.ToString());Console.ReadLine();
}
public static object Calc(string expression) { string className = Calc; string methodName = Run; expression=expression.Replace(/,*1.0/); // 创建编译器实例。 ICodeCompiler complier = (new CSharpCodeProvider().CreateCompiler()); // 设置编译参数。 CompilerParameters paras = new CompilerParameters(); paras.GenerateExecutable = false; paras.GenerateInMemory = true; // 创建动态代码。 StringBuilder classSource = new StringBuilder(); classSource.Append(public class + className +\n); classSource.Append({\n); classSource.Append( public object + methodName + ()\n); classSource.Append( {\n); classSource.Append( return + expression + ;\n); classSource.Append( }\n); classSource.Append(}); //System.Diagnostics.Debug.WriteLine(classSource.ToString()); // 编译代码。 CompilerResults result = complier.CompileAssemblyFromSource(paras, classSource.ToString()); // 获取编译后的程序集。 Assembly assembly = result.CompiledAssembly; // 动态调用方法。 object eval = assembly.CreateInstance(className); MethodInfo method = eval.GetType().GetMethod(methodName); object reobj = method.Invoke(eval, null); GC.Collect();return reobj;
}
}}
ASP编码教程:如何实现/使用缓存
[ASP]2015年4月15日ASP编码教程:asp缓存的分类
[ASP]2015年4月15日ASP编码教程:何谓ASP缓存/为什么要缓存
[ASP]2015年4月15日ASP编码教程:asp实现的sha1加密解密代码
[ASP]2015年4月15日ASP编码教程:asp执行带参数的sql语句实例
[ASP]2015年4月14日