上一篇:C#中调用Windows API的要点 >>
C#: 通过动态编译获取字符串所表达的值
/*****************************************************************
** 文件名: 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
相关文章:
- · 通过 C# 使用 J# 类库中的 Zip 类压缩文件和数据
- · 发布我用C#写的两个小工具
- · C# 2.0:使用匿名方法、迭代程序和局部类来创建优雅的代码
- · 如何去检测网络的连接状态(C#)
- · 从Internet上抓取指定URL的源码的方案(C#)
- · DotNET(C#) Socket基本编程
- · 我对C#中事件委托的通俗看法
- · C++程序员容易犯的十个C#错误
- · C#中使用Oracle 存储过程笔记
- · C# - Oracle数据库连接方法
- · C#下实现ping功能
- · c#.net常用函数和方法集
- · Delete yourself(C#)
- · c#中用axWebBrowser中提交表单,或点击某个对象
- · 如何获得 WINDOWS 版本[C# 版]
- · C#中SQL语句参数写法
- · c# singleton 的改进
- · C#开发WAP程序
- · C# 编码规范和编程好习惯
- · MD5算法之C#程序 MD5算法描述
- · C#处理鼠标和键盘事件
- · MD5算法之C#程序 MD5算法描述
- · 如何用C#将数据库中的记录制成XML
- · 创建CLR自定义触发器-C#
- · 获得汉字字符串拼音首字母 C#版
- · C#之消息队列的简要说明----自学笔记
- · C#实现的根据年月日计算星期几的函数
- · 文件改名的C#实现
- · C#中结构或类的嵌套 的方法
- · 深入剖析C#继承机制7
- · 深入剖析C#继承机制6
- · 深入剖析C#继承机制4
- · 深入剖析C#继承机制5
- · 深入剖析C#继承机制3
- · 深入剖析C#继承机制2
- · 深入剖析C#继承机制1
- · 怎样通过Visual C#.net创建一个DTS任务
- · 在C#桌面应用使用多语言
