string 转换成计算公式
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
文章仅作为学习笔记,没有令人拍案叫绝的精彩剖析,没有深入浅出的长篇巨著。如果没有帮到您,抱歉。如果一不小心解开了您的困惑。非常荣幸。仅以此篇共勉。也感谢那些我读过的博客和看过的视频。
厚德载物,自强不息!