CodeDomProvider 反射机制生成计算函数
来源:互联网 发布:苏州碟科数据恢复中心 编辑:程序博客网 时间:2024/06/10 00:05
using System;using System.Text;//编译器using System.CodeDom.Compiler;//反射using System.Reflection;namespace TestRunSpeed{ public class Evaluator { //创建编译类对象 private object _Compiled = null; //构造函数 public Evaluator() { ConstructEvaluator(); } /// <summary> /// 使用编译器创建类 /// </summary> public void ConstructEvaluator() { //创建编译器 对象并实例化。使用语言为 CSharp CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp"); //调用编译器的参数 CompilerParameters cp = new CompilerParameters(); //添加引用 cp.ReferencedAssemblies.Add("system.dll"); //不生成可执行文件 cp.GenerateExecutable = false; //不在内存中生成输出 cp.GenerateInMemory = false; //创建代码串 StringBuilder code = new StringBuilder(); code.Append("using System;/n"); code.Append("namespace TestRunSpeed { /n"); code.Append("public class _Evaluator { /n"); code.Append("public double GetResult(double d1, double d2, double d3, double d4, double d5 , double d6) { /n"); code.Append("return d1 * Math.Pow(d2, d3) / d4 + d5 - d6; /n"); code.Append("}}}"); //返回编译结果 CompilerResults cr = provider.CompileAssemblyFromSource(cp, code.ToString()); //判断是否存在错误或者警告 if (cr.Errors.HasErrors) { //创建字符串对象 StringBuilder error = new StringBuilder(); //循环遍历错误和警告,将错误信息保存到字符串对象中 error.Append("Error Compiling Expression: "); foreach (CompilerError err in cr.Errors) { error.AppendFormat("{0}/n", err.ErrorText); } //抛出异常 throw new Exception("Error Compiling Expression: " + error); } //获取编译好的程序集 Assembly assembly = cr.CompiledAssembly; //创建编译类的引用 _Compiled = assembly.CreateInstance("TestRunSpeed._Evaluator"); } public object Evaluate(params object[] d) { //在编译类中,根据方法名获取此方法 MethodInfo mi = _Compiled.GetType().GetMethod("GetResult"); //根据传入参数执行方法并返回结果 return mi.Invoke(_Compiled, d); } }} //程序中调用Evaluator ce = new Evaluator();double c = double.Parse(ce.Evaluate(3.14, 99.85, 1.33, 25.9854, 22.78, 22.45).ToString());
- CodeDomProvider 反射机制生成计算函数
- CodeDomProvider JScript生成计算函数
- java反射机制生成对象
- java 反射机制调用函数
- java中的integer的反射计算机制
- Java反射机制根据实体生成SQL
- 生成函数/拆分数计算
- JAVA反射机制(现成的函数)
- java反射机制和getClass()函数
- java中的反射机制(getClass函数)
- IOS反射机制的几个重要函数
- Java反射机制getClass()函数
- java反射机制实现swap函数
- 使用反射机制调用构造函数
- 含有构造函数反射生成java类
- 利用反射机制计算字符表达式的测试。
- 利用java反射机制生成entity的一个例子
- 模拟Hibernate底层生成SQL语句(反射机制)
- Linux文件查找命令find,xargs详述
- asp.net屏蔽ip网段的代码及配置
- Vi编辑器的基本使用方法
- asp.net使用session丢失问题的解决办法
- LINUX命令xargs的简单应用及举例
- CodeDomProvider 反射机制生成计算函数
- 自定义ajax验证控件-客户端引用服务器端的验证
- 按大小顺序存储的折半查找
- asp.net截取给定长度的汉字超出部分以...代替方法
- Android 3D游戏开发(高级篇)——Opengl ES游戏引擎实现(送源代码)
- HTML设为首页/加入收藏代码
- asp.net生成随机数或字母验证码代码分享
- Android UI学习 - TableLayout
- Windows/MFC数据类型