zoukankan      html  css  js  c++  java
  • JEvaluator Jscript.net

    using Microsoft.JScript;
    using System;
    using System.CodeDom.Compiler;
    using System.Collections.Generic;
    using System.Linq;
    using System.Reflection;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Soubisc.Infrastructure
    {
        public static class JEvaluator
        {
            private const string JScriptSource =
    @"
        class Evaluator
        {
            public function Eval(expression : String) : Object 
            {
                return eval(expression);
            }
        }
    ";
            private static object _evaluator;
            private static Type _evaluatorType;
    
            static JEvaluator()
            {
                //构造JScript的编译驱动代码
                CodeDomProvider provider = CodeDomProvider.CreateProvider("JScript");
    
                CompilerParameters parameters = new CompilerParameters();
                parameters.GenerateInMemory = true;
    
                CompilerResults results = provider.CompileAssemblyFromSource(parameters, JScriptSource);
    
                Assembly assembly = results.CompiledAssembly;
                _evaluatorType = assembly.GetType("Evaluator");
    
                _evaluator = Activator.CreateInstance(_evaluatorType);
            }
    
            public static object Eval(string statement)
            {
                return _evaluatorType.InvokeMember(
                    "Eval",
                    BindingFlags.InvokeMethod,
                    null,
                    _evaluator,
                    new object[] { statement }
                    );
            }
        }
    }
  • 相关阅读:
    eclipse
    一次性验证码
    mybatis。逆向工程
    mybatis02.动态sql
    mybatis01
    plsql
    HDU.2149 Public Sale (博弈论 巴什博弈)
    HDU.1846 Brave Game (博弈论 巴什博弈)
    博弈论快速入门
    HUD.2795 Billboard ( 线段树 区间最值 单点更新 单点查询 建树技巧)
  • 原文地址:https://www.cnblogs.com/Googler/p/3334914.html
Copyright © 2011-2022 走看看