zoukankan      html  css  js  c++  java
  • c# JScriptProvider包装

    using System;
    using System.CodeDom.Compiler;
    using System.Reflection;
    using System.Web.UI;
    using Microsoft.JScript;
    
    namespace HuaTong.General.Utility
    {
        /// <summary>
        /// JScriptProvider包装
        /// </summary>
        public static class JScript
        {
            private static object js = null;
            private static Type jsType = null;
            private static readonly string jsSource =
              @"package JScript  
              {  
                 class JScript  
                 {  
                  public function Eval(expr : String) : Object  
                  {  
                   return eval(expr);  
                  }  
                 }  
              }";
            /// <summary>
            /// 构造javascript运行时对象
            /// </summary>
            static JScript()
            {
                JScriptCodeProvider compiler = new JScriptCodeProvider();
                CompilerParameters parameters = new CompilerParameters();
                parameters.GenerateInMemory = true;
                CompilerResults results = compiler.CompileAssemblyFromSource(parameters, jsSource);
    
                Assembly assembly = results.CompiledAssembly;
                jsType = assembly.GetType("JScript.JScript");
    
                js = Activator.CreateInstance(jsType);
            }
            /// <summary>
            /// 获取表达式的值
            /// </summary>
            /// <returns></returns>
            public static int EvalToInt32(string code)
            {
                string s = EvalToString(code);
                return int.Parse(s);
            }
            /// <summary>
            /// 获取表达式的值
            /// </summary>
            /// <returns></returns>
            public static double EvalToDouble(string code)
            {
                string s = EvalToString(code);
                return double.Parse(s);
            }
            /// <summary>
            /// 获取表达式的值
            /// </summary>
            /// <returns></returns>
            public static string EvalToString(string code)
            {
                object o = EvalToObject(code);
                return o.ToString();
            }
            /// <summary>
            /// 获取表达式的值
            /// </summary>
            /// <returns></returns>
            public static object EvalToObject(string code)
            {
                return jsType.InvokeMember("Eval", BindingFlags.InvokeMethod, null, js,
                      new object[] { code });
            }
        }
    }
  • 相关阅读:
    空悬指针、野指针、内存泄漏、内存溢出
    自定义消息的操作方法ON_MESSAGE(..)
    为什么static成员变量一定要在类外初始化?
    Ubuntu 系统目录结构
    Beyond Compare 4 30天评估期结束的解决办法
    C++ string 字符串 结尾 标志
    C语言——枚举类型用法
    结构体struct-联合体union-枚举enum
    网卡bood
    kvm 安装
  • 原文地址:https://www.cnblogs.com/password1/p/5870730.html
Copyright © 2011-2022 走看看