网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.加速工具软件&总结.
.J2ME开发手机游戏物理模型之抛物.
.setYear 方法.
.从ifelse到设计模式的转变.
.Java中的17种常用正则表达式归纳.
.Java的网络功能与编程5.
.Java中实现文件拷实例.
.利用Java实现串口全双工通讯 (转.
.浅议Web服务.
.Java对Domino Objects的访问 (5.
.tomcat配置多个域名的问题.
.Java技术:使您轻松地进行多线程.
.关于Java语言开发编程中JDBC的介.
.JAVA相关基础知识(7).
.toFixed 方法.
.java指南之使用图形:使用原始图.
.如何在Java应用程序中读取8位和2.
.使用J2ME与MIDP进行手机开发的全.
.J2EE到底是什么?.
.介绍J2ME平台的几个重要概念.

通过动态编译获取字符串表达的值

发表日期:2008-1-5



  看到许多人经常问到这个问题: 怎么由字符串 “126 + (256 - 2^4 )”,或者怎么判定 “115 > 56 14<45”的结果等等,在MSDN上查了查,写了一个Eval类看到许多人经常问到这个问题: 怎么由字符串 “126 + (256 - 2^4 )”,或者怎么判定 “115 > 56 14<45”的结果等等,在MSDN上查了查,写了一个Eval类。
  
  /*****************************************************************
  ** 文件名:    Eval.cs
  ** Copyright (c) 1999 -2003
  ** 创建人:    Phoenix
  ** 创建日期:
  ** 修改人:
  ** 修改日期:
  ** 描 述:     获取字符串所表示的逻辑意义
  ** 版 本:1.0
  ******************************************************************/
  using System.CodeDom;
  using System.CodeDom.Compiler;
  using Microsoft.CSharp;
  using System.Reflection;
  
  public class Eval
  {
  static object GetValue( string value )
  {
  string codeSnippet = "using System; " + "\r\n" +
  "namespace CzG {" + "\r\n" +
  " public class Eval" + "\r\n" +
  " {" + "\r\n" +
  "    public Eval(){} " + "\r\n" +
  " public object GetValue()" + "\r\n" +
  " {" + "\r\n" +
  "  return " + value + ";" + "\r\n" +
  " }" + "\r\n" +
  " } }";
  
  CodeSnippetCompileUnit unit = new CodeSnippetCompileUnit( codeSnippet );
  
  ICodeCompiler compiler = new CSharpCodeProvider().CreateCompiler();
  CompilerParameters para = new CompilerParameters();
  para.ReferencedAssemblies.Add( "System.dll" );
  para.GenerateInMemory = true;
  para.GenerateExecutable = false;
  para.OutputAssembly = "Eval.dll";
  
  Assembly asm = compiler.CompileAssemblyFromDom( para , unit ).CompiledAssembly;
  
  Type type = asm.GetType( "CzG.Eval" );
  MethodInfo mi = type.GetMethod( "GetValue" , BindingFlags.Public BindingFlags.Instance );
  
  object obj = asm.CreateInstance( "CzG.Eval" );
  return mi.Invoke( obj , null );
  }
  }
  
  调用:
  
  Console.WriteLine( Eval.GetValue(“125 -23” ) );
  Console.WriteLine( Eval.GetValue(“125<23“ ) );
  
  Output:
  102
  False
上一篇:.Net下调用SQL Server2000中存储过程 人气:1272
下一篇:.NET 和智能传输服务API编写自动更新程序 人气:782
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐