1
using System;
2
using System.Data;
3
using System.Configuration;
4
using System.Collections;
5
using System.Web;
6
using System.Web.Security;
7
using System.Web.UI;
8
using System.Web.UI.WebControls;
9
using System.Web.UI.WebControls.WebParts;
10
using System.Web.UI.HtmlControls;
11
using System.Text;
12
using System.CodeDom.Compiler;
13
using Microsoft.CSharp;
14
using System.Reflection;
15
16
public partial class Default2 : System.Web.UI.Page
17
{
18
protected void Page_Load(object sender, EventArgs e)
19
{
20
TimeSpan Ts = new TimeSpan();
21
DateTime dtStar = DateTime.Now;
22
Evaluator ev = new Evaluator();
23
Response.Write(ev.Eval("2*2*3*10*3.12/811"));
24
DateTime dtEnd = DateTime.Now;
25
Ts = dtEnd - dtStar;
26
Response.Write("<br>" + Ts.TotalMilliseconds.ToString());
27
}
28
}
29
public class Evaluator
30
{
31
private static CodeDomProvider comp = new CSharpCodeProvider();
32
private static CompilerParameters cp = new CompilerParameters();
33
private static MethodInfo mi;
34
public object Eval(string expression)
35
{
36
StringBuilder codeBuilder = new StringBuilder();
37
codeBuilder.Append("using System;");
38
codeBuilder.Append("using Microsoft.CSharp;");
39
codeBuilder.Append("");
40
codeBuilder.Append("public class Mode");
41
codeBuilder.Append("{ ");
42
codeBuilder.Append(" public static object Func()");
43
codeBuilder.Append("{");
44
codeBuilder.Append(" return " + expression + ";");
45
codeBuilder.Append(" }");
46
codeBuilder.Append(" }");
47
cp.ReferencedAssemblies.Add("System.dll");
48
cp.GenerateExecutable = false;
49
cp.GenerateInMemory = true;
50
string code = codeBuilder.ToString();
51
string[] stra = new string[] { code };
52
CompilerResults cr = comp.CreateCompiler().CompileAssemblyFromSource(cp, code);
53
if (cr.Errors.HasErrors)
54
{
55
return null;
56
}
57
else
58
{
59
Assembly a = cr.CompiledAssembly;
60
Type t = a.GetType("Mode");
61
mi = t.GetMethod("Func", BindingFlags.Static | BindingFlags.Public);
62
return mi.Invoke(null, new object[0]);
63
}
64
}
65
}
using System;2
using System.Data;3
using System.Configuration;4
using System.Collections;5
using System.Web;6
using System.Web.Security;7
using System.Web.UI;8
using System.Web.UI.WebControls;9
using System.Web.UI.WebControls.WebParts;10
using System.Web.UI.HtmlControls;11
using System.Text;12
using System.CodeDom.Compiler;13
using Microsoft.CSharp;14
using System.Reflection;15

16
public partial class Default2 : System.Web.UI.Page17
{18
protected void Page_Load(object sender, EventArgs e)19
{20
TimeSpan Ts = new TimeSpan();21
DateTime dtStar = DateTime.Now;22
Evaluator ev = new Evaluator();23
Response.Write(ev.Eval("2*2*3*10*3.12/811"));24
DateTime dtEnd = DateTime.Now;25
Ts = dtEnd - dtStar;26
Response.Write("<br>" + Ts.TotalMilliseconds.ToString());27
}28
}29
public class Evaluator30
{31
private static CodeDomProvider comp = new CSharpCodeProvider();32
private static CompilerParameters cp = new CompilerParameters();33
private static MethodInfo mi;34
public object Eval(string expression)35
{36
StringBuilder codeBuilder = new StringBuilder();37
codeBuilder.Append("using System;");38
codeBuilder.Append("using Microsoft.CSharp;");39
codeBuilder.Append("");40
codeBuilder.Append("public class Mode");41
codeBuilder.Append("{ ");42
codeBuilder.Append(" public static object Func()");43
codeBuilder.Append("{");44
codeBuilder.Append(" return " + expression + ";");45
codeBuilder.Append(" }");46
codeBuilder.Append(" }");47
cp.ReferencedAssemblies.Add("System.dll");48
cp.GenerateExecutable = false;49
cp.GenerateInMemory = true;50
string code = codeBuilder.ToString();51
string[] stra = new string[] { code };52
CompilerResults cr = comp.CreateCompiler().CompileAssemblyFromSource(cp, code);53
if (cr.Errors.HasErrors)54
{55
return null;56
}57
else58
{59
Assembly a = cr.CompiledAssembly;60
Type t = a.GetType("Mode");61
mi = t.GetMethod("Func", BindingFlags.Static | BindingFlags.Public);62
return mi.Invoke(null, new object[0]);63
}64
}65
}


浙公网安备 33010602011771号