newsgroups-index (beta)

Current group: microsoft.public.cn.dotnet.languages.csharp

请问谁有比较好的计算表达式的.net控件

请问谁有比较好的计算表达式的.net控件  
游向明
 Re: 请问谁有比较好的计算表达式的.net控件  
Vince Yuan
From:游向明
Subject:请问谁有比较好的计算表达式的.net控件
Date:Thu, 20 Jan 2005 00:57:06 +0800
哪位有比较好的计算表达式的控件,就像是计算字符串"1+2+3"等于多少这样的控件。
如果有的话,希望告诉我下载地址,或者发到我邮箱中,先谢了~~~~~~~~~
From:Vince Yuan
Subject:Re: 请问谁有比较好的计算表达式的.net控件
Date:Thu, 20 Jan 2005 08:18:52 +0800
// 给出一个表达式以及表达式里面所有变量的值。求出这个表达式的值。类似
javascript中的Eval().
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);
}
}
}

--
Vince


"游向明" wrote in message
news:%2386CAdk$EHA.1084@tk2msftngp13.phx.gbl...
> 哪位有比较好的计算表达式的控件,就像是计算字符串"1+2+3"等于多少这样的控件。
>
> 如果有的话,希望告诉我下载地址,或者发到我邮箱中,先谢了~~~~~~~~~
>
>
   

Copyright © 2006 newsgroups-index   -   All rights reserved   -   Impressum