Shouldn't this work: using System; using System.CodeDom; using System.CodeDom.Compiler; using Microsoft.CSharp; using System.Reflection;
class Class1 { static void Main(string[] args) { string eval = "(10 + 3) * 5"; Console.WriteLine("Evaluated: {0}", Evaluator(eval)); } static int Evaluator(string eval) { ICodeCompiler comp = (new CSharpCodeProvider().CreateCompiler()); CompilerParameters cp = new CompilerParameters(); cp.ReferencedAssemblies.Add("system.dll"); cp.GenerateExecutable = false; cp.GenerateInMemory = true; string code = "using System; "; code += "namespace MyTest { "; code += " public class Evaluator { "; code += " public int GetInt() { "; code += " return (" + eval + "); "; code += "} } }"; CompilerResults cr = comp.CompileAssemblyFromSource(cp, code); Assembly a = cr.CompiledAssembly; Object o = a.CreateInstance("MyTest.Evaluator"); Type type = o.GetType(); MethodInfo mi = type.GetMethod("GetInt"); return (int) mi.Invoke(o, null); } } Thanks, Shawn Wildermuth [EMAIL PROTECTED] > -----Original Message----- > From: dotnet discussion [mailto:[EMAIL PROTECTED]] > On Behalf Of Shawn Wildermuth > Sent: Monday, April 15, 2002 8:58 AM > To: [EMAIL PROTECTED] > Subject: Re: [DOTNET] Evaluate math expression strings? > > > Can't you use the CodeDOM to do this? Wrap the whole thing > in a class (in the CodeDOM) and evaluate it. No? > > Thanks, > > Shawn Wildermuth > [EMAIL PROTECTED] > > > -----Original Message----- > > From: dotnet discussion [mailto:[EMAIL PROTECTED]] > > On Behalf Of Stephens > > Sent: Monday, April 15, 2002 8:36 AM > > To: [EMAIL PROTECTED] > > Subject: [DOTNET] Evaluate math expression strings? > > > > > > > Does the framework have (or is someone willing to share :) > > ) a utility > > > class to do this? Or will I need to build my own interpreter? > > > Something like... > > > > > > int result = MyMath.Evaluate( "(10 / 2) * 3" ); > > > > There's some VB 6 code that evaluates simple expressions at: > > > http://www.vb-helper.com/HowTo/expr.zip > > You can read messages from the DOTNET archive, unsubscribe > from DOTNET, or subscribe to other DevelopMentor lists at > http://discuss.develop.com. > > You can read messages from the > DOTNET archive, unsubscribe from DOTNET, or subscribe to > other DevelopMentor lists at http://discuss.develop.com. > You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.