上一篇:IIS 6 常见问题解答 >>
一个动态编译的例子
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.Reflection;
using System.Text;
namespace ConsoleApplication22
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
int i = (int)Calc("1+2*3");
Console.WriteLine(i.ToString());
Console.ReadLine();
}
public static object Calc(string expression)
{
string className = "Calc";
string methodName = "Run";
expression=expression.Replace("/","*1.0/");
// 创建编译器实例。
ICodeCompiler complier = (new CSharpCodeProvider().CreateCompiler());
// 设置编译参数。
CompilerParameters paras = new CompilerParameters();
paras.GenerateExecutable = false;
paras.GenerateInMemory = true;
// 创建动态代码。
StringBuilder classSource = new StringBuilder();
classSource.Append("public class "+ className +"\n");
classSource.Append("{\n");
classSource.Append(" public object " + methodName + "()\n");
classSource.Append(" {\n");
classSource.Append(" return "+ expression + ";\n");
classSource.Append(" }\n");
classSource.Append("}");
//System.Diagnostics.Debug.WriteLine(classSource.ToString());
// 编译代码。
CompilerResults result = complier.CompileAssemblyFromSource(paras, classSource.ToString());
// 获取编译后的程序集。
Assembly assembly = result.CompiledAssembly;
// 动态调用方法。
object eval = assembly.CreateInstance(className);
MethodInfo method = eval.GetType().GetMethod(methodName);
object reobj = method.Invoke(eval, null);
GC.Collect();
return reobj;
}
}
}
下一篇:ASP、JSP、PHP 三种技术比较 >>
相关文章:
- · 使用Web标准建站第8天:CSS布局入门
- · 使用Web标准建站第7天:CSS入门
- · 使用Web标准建站第4天:调用样式表
- · 使用Web标准建站第3天:定义语言编码
- · 使用Web标准建站第2天:什么是名字空间
- · 使用Web标准建站第1天:选择什么样的DOCTYPE
- · asp 读取网卡mac地址
- · 改进性能和样式的 24个 ASP 技巧
- · 用python实现面向对像的ASP程序
- · 代码发布!两个小函数让你的ASP程序对SQL注入免疫!
- · 编写高性能 Web 应用程序的10个技巧
- · 动态的二级伸缩式的菜单,asp编写
- · 在ASP中使用断开的记录集
- · 动态网站首页的静态生成方法
- · 编写高性能WEB 应用程序的10 个技巧
- · 编程取得Google的PageRank3及所在目录
- · ASP中如何执行存储过程?
- · ASP里使用MD5加密的函数及示例
- · 使用“使用中值排序基数法”实现树状结构(二)
- · 使用“使用中值排序基数法”实现树状结构(一)
- · ASP小偷(远程数据获取)程序的入门教程 选择自 arcow 的 Blog
- · 编写通用的asp防注入程序 选择自 ph4studio 的 Blog
- · ASP模拟MVC模式编程
- · 怎样在页面和页面的用户控件进行交互
- · webform页面间传值的特殊方法
- · 如何把数据放到web不能访问的文件夹中并给用户下载?
- · 一个获取图片宽度和高度的类
- · 后台动态设置前台标签内容和属性
- · 写入文本文件的过程函数(ASP)
- · 一个用c#写的扫描asp源码漏洞的应用程序
- · Oblog 2.52导出日志最新漏洞
- · 让Apache支持ASP.NET
- · 关于Oblog 2.52 help.asp漏洞的修补问题
- · asp.net常用函数
- · Request.ServerVariables的所有值!
- · 记录每行显示数个的计算
- · 项目技术经验总结二:系统多风格的实现
- · Doxygen配置(翻译)
