C# 动态计算表达式的值--动态编译和DataTable.Compute()
2013-05-30 12:49
465 查看
public static void TestComput(string expression) { //要编译的代码段 string code = @"public class TestCompute {public static object Compute() {return @exp;}}"; code = code.Replace("@exp", expression); CSharpCodeProvider csharpCodeProvider = new CSharpCodeProvider(); CompilerParameters compilerParameters = new CompilerParameters(); //compilerParameters.CompilerOptions = "/t:library"; //compilerParameters.GenerateInMemory = true; //开始编译 CompilerResults compilerResults = csharpCodeProvider.CompileAssemblyFromSource(compilerParameters, code); if (compilerResults.Errors.Count > 0) throw new Exception("编译出错!"); Assembly assembly = compilerResults.CompiledAssembly; Type type = assembly.GetType("TestCompute"); //使用动态编译计算表达式 object obj = type.GetMethod("Compute").Invoke(null, null); //使用DataTable的Compute也可以计算一些简单的表达式 DataTable dt = new DataTable(); obj = dt.Compute(expression, null); }
相关文章推荐
- C#动态表达式计算(续1)
- C#调用Excel报 error CS1969: 找不到编译动态表达式所需的一个或多个类型。是否缺少引用?
- C#调用Excel报 error CS1969: 找不到编译动态表达式所需的一个或多个类型。是否缺少引用?
- 利用Java动态编译计算数学表达式
- 在C#中解决动态计算表达式的问题(如字符串"Sin(1)+Cos(2)",执行并得出结果)
- C# 调用Excel报 error CS1969: 找不到编译动态表达式所需的一个或多个类型。是否缺少引用?
- c#动态计算表达式
- c#中动态输入和计算 代数表达式
- VS2013 C#调用EXCEL 编译报错:找不到编译动态表达式所需的一个或多个类型。是否缺少引用?
- C#动态表达式计算(续2)
- C#动态表达式计算
- C#.NET 动态计算表达式值
- DataTable.Compute自由计算表达式
- C#动态表达式计算
- C#的动态编译执行
- C# 动态编译及反射执行
- .net C# 动态编译 cs2001 错误 处理
- 数据结构中用C#实现"表达式计算"
- C#动态编译
- 巧用动态即时编译实现公式的定义与计算