using System; using System.Reflection; using System.CodeDom.Compiler; using System.Text; using Microsoft.CSharp; namespace CSharpMath { class Calculator { public static double EvaluateExpression(string expression) { StringBuilder Sb = new StringBuilder(); Sb.AppendLine("public static class Cal"); Sb.AppendLine("{"); Sb.AppendLine("\t public static double cal()"); Sb.AppendLine("\t {"); Sb.AppendFormat("\t\t return {0};", expression); Sb.AppendLine("\t }"); Sb.AppendLine("}"); string code = Sb.ToString(); CompilerResults compilerResults = CompileScript(code); if (compilerResults.Errors.HasErrors) { throw new InvalidOperationException("Expression has a syntax error."); } // รัน class และ method ที่ compile เก็บไว้ใน memory Assembly assembly = compilerResults.CompiledAssembly; MethodInfo method = assembly.GetType("Cal").GetMethod("cal"); return (double)method.Invoke(null, null); } // compile โค้ดแล้วเก็บไว้ใน memory private static CompilerResults CompileScript(string source) { CompilerParameters parms = new CompilerParameters(); parms.GenerateExecutable = false; parms.GenerateInMemory = true; parms.IncludeDebugInformation = false; CodeDomProvider compiler = CSharpCodeProvider.CreateProvider("CSharp"); return compiler.CompileAssemblyFromSource(parms, source); } } }
เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง