Code
Usage evaluator. eval ("(1*10) + 2-10 ")
/** // <Summary>
/// Dynamic Evaluation
/// </Summary>
Public class Evaluator
{
/** // <Summary>
/// Calculation result. If an expression error occurs, an exception is thrown.
/// </Summary>
/// <Param name = "statement"> expression, for example, "1 + 2 + 3 + 4" </param>
/// <Returns> result </returns>
Public static object eval (string Statement)
{
Return _ evaluatortype. invokemember (
"Eval ",
Bindingflags. invokemethod,
Null,
_ Evaluator,
New object [] {statement}
);
}
/** // <Summary>
///
/// </Summary>
Static Evaluator ()
{
// Construct the JScript compilation driver code
Codedomprovider provider = codedomprovider. createprovider ("jscript ");
Compilerparameters parameters;
Parameters = new compilerparameters ();
Parameters. generateinmemory = true;
Compilerresults results;
Results = provider. compileassemblyfromsource (parameters, _ jscriptsource );
Assembly = results. compiledassembly;
_ Evaluatortype = assembly. GetType ("evaluator ");
_ Evaluator = activator. createinstance (_ evaluatortype );
}
Private Static object _ evaluator = NULL;
Private Static type _ evaluatortype = NULL;
/** // <Summary>
/// JScript code
/// </Summary>
Private Static readonly string _ jscriptsource =
@ "Class Evaluator
{
Public Function eval (expr: string): String
{
Return eval (expr );
}
}";
}