给出一个表达式以及表达式里面所有变量的值。求出这个表达式的值。类似javascript中的Eval().

王朝html/css/js·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

给出一个表达式以及表达式里面所有变量的值。求出这个表达式的值。类似javascript中的Eval().作者:timmy3310

Runtime C# Expression Evaluator

http://www.codeproject.com/csharp/runtime_eval.asp

---------------------------------------------------------------

http://expert.csdn.net/Expert/topic/1553/1553098.xml?temp=.1884882

请参考

这个帖子里面有我写的一个表达式解析类

---------------------------------------------------------------

using System;

using System.CodeDom;

using System.CodeDom.Compiler;

using Microsoft.CSharp;

using System.Reflection;

using System.Text;

namespace TestApp

{

public class Test

{

public static void Main()

{

string expression = "125.8 + 208.2 + 120.90";

string ret = Eval.Calc(expression).ToString();

Console.Write("{0} = {1} ",expression, ret);

}

}

public class Eval

{

public static object Calc(string expression)

{

string className = "Calc";

string methodName = "Run";

// 创建编译器实例。

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);

return method.Invoke(eval, null);

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航