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 }
                    );
            }
        }
    }
  • 相关阅读:
    《JavaScript语言精粹》学习心得
    Linq笔记
    关于缓存
    JS-替换全部全部字符串
    相同数据用分号分割
    单例模式
    es6- ArrayBuffer
    vue常用属性解释。
    装饰者模式
    中介者模式
  • 原文地址:https://www.cnblogs.com/Googler/p/3334914.html
Copyright © 2011-2022 走看看