string 转换成计算公式

View Code
 1         /// <summary>
 2         /// string 转换成计算公式
 3         /// </summary>
 4         /// <param name="expression"></param>
 5         /// <returns></returns>
 6         public static object Calc(string expression)
 7         {
 8             string className = "CalcQ";
 9             string methodName = "RunW";
10             expression = expression.Replace("/ ", "*1.0/ ");
11 
12             //创建编译器实例。     
13             ICodeCompiler complier = new CSharpCodeProvider().CreateCompiler();
14             //设置编译参数。     
15             CompilerParameters paras = new CompilerParameters();
16             paras.GenerateExecutable = false;
17             paras.GenerateInMemory = true;
18 
19             //创建动态代码。     
20             StringBuilder classSource = new StringBuilder();
21             classSource.Append("public     class     " + className + "\n ");
22             classSource.Append("{\n ");
23             classSource.Append("                 public     object     " + methodName + "()\n ");
24             classSource.Append("                 {\n ");
25             classSource.Append("                                 return     " + expression + ";\n ");
26             classSource.Append("                 }\n ");
27             classSource.Append("} ");
28 
29             //System.Diagnostics.Debug.WriteLine(classSource.ToString());     
30 
31             //编译代码。     
32             CompilerResults result = complier.CompileAssemblyFromSource(paras, classSource.ToString());
33 
34             //获取编译后的程序集。     
35             Assembly assembly = result.CompiledAssembly;
36 
37             //动态调用方法。     
38             object eval = assembly.CreateInstance(className);
39             MethodInfo method = eval.GetType().GetMethod(methodName);
40             object reobj = method.Invoke(eval, null);
41             GC.Collect();
42             return reobj;
43         }

 

转载于:https://www.cnblogs.com/lin-b/archive/2012/07/10/2584959.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值