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 });
}
}
}
c# JScriptProvider包装的更多相关文章
- 【Java心得总结一】Java基本类型和包装类型解析
说到数据类型这个问题是一个基本的不能再基本的问题,我们当初编程入门第一课一般就是讲数据类型,而今天我想记录的是一个在Java中容易忽略的问题,即基本类型和包装类型. 一.基本类型出现的原因 我们都知道 ...
- 5.6 JS中基本包装类型
为了便于操作基本类型值,ES还提供了三种特殊的引用类型,即(基本包装类型):Number,String,Boolean.这三种类型与前面介绍的引用类型相似,但同时也拥有基本数据类型的一些特性. 平时经 ...
- javaScript对象-基本包装类型的详解
本人按书上的内容大致地把javaScript对象划分成“引用类型”.“基本包装类型”和“内置对象”三块内容. 我们这篇先了解下基本包装类型的详细用法吧! 一.我们先解下相关概念: 1.引用类型的值(对 ...
- ongl(原始类型和包装类型)
原始类型和包装类型 //首先创建两个实体类 user 和 address user中包含address package cn.jbit.bean; public class User { //用户类 ...
- 从零开始学习jQuery (三) 管理jQuery包装集
本系列文章导航 从零开始学习jQuery (三) 管理jQuery包装集 一.摘要 在使用jQuery选择器获取到jQuery包装集后, 我们需要对其进行操作. 本章首先讲解如何动态的创建元素, 接着 ...
- jQuery包装集
jQuery包装集指的是通过$()方法返回的一个元素集,这跟一般的javascript数组有所区别, 包装集在后者的基础上还有一些初始化的函数和属性. 我们可以对二者进行一个比较: jsdiv = d ...
- java基础类型、包装器
char a = 'h'; //类包装器 Character aobj = a ;//自动装箱 byte b = 6; Byte bobj = b; short s = 234; Short sob ...
- 如何把 Callback 接口包装成 Promise 接口
最近一段时间一直在看Node.js,在开发过程中经常要调用一些异步接口,通常在接口的最后一个参数会传入一个回调函数,可以用来处理异常,非异常情况.大致模式如下: var fs = require(“f ...
- HttpContext的dynamic包装器DynamicHttpContext (附原代码)
项目背景:在.net framework下使用asp.net webform,特别是aspx+ajax+ashx中,ashx后台代码获取传入参数的时候,需要很多[“…”],我用dynamic对他进行包 ...
随机推荐
- snapshot与release
总结自:https://www.jianshu.com/p/084fd2408d9a 这两个概念是用于描述jar包,jar包提供给其他系统作为依赖. 1. snapshot版本代表不稳定.尚处于开发中 ...
- wix toolset 用wixui 默认中文
light.exe .\test.wixobj -ext WixUIExtension -ext WixUtilExtension -cultures:zh-CN
- Eclipse安卓项目导入android.support.design报错的解决办法
导入android.support.design出错:1.项目除了需要依赖appcompat_v7包外还要design包2.design包就是在安卓sdk下Extras中的android.suppor ...
- Android开发-网络通信2
调试了三种通信方法:HttpClient.AsyncHttpClient 和 Volley . HttpClient 测试代码[1]: public class HttpUtil { public s ...
- JavaScript内部原理系列-变量对象(Variable object)
概要 我们总是会在程序中定义一些函数和变量,之后会使用这些函数和变量来构建我们的系统.然而,对于解释器来说,它又是如何以及从哪里找到这些数据的(函数,变量)?当引用一个对象的时候,在解释器内部又发生了 ...
- Redis-CentOS7安装
安装 Redis是c语言开发的. 安装redis需要c语言的编译环境.如果没有gcc需要在线安装.yum install gcc-c++ 安装步骤: 第一步:redis的源码包上传到linux系统. ...
- C++实现矩阵压缩
C++实现矩阵压缩 转置运算时一种最简单的矩阵运算.对于一个m*n的矩阵M,他的转置矩阵T是一个n*m的矩阵,且T(i,j) = M(j,i). 一个稀疏矩阵的转置矩阵仍然是稀疏矩阵. 矩阵转置 方案 ...
- Spring的引用内部Bean属性和给级联属性
第一个是内部Bean的配置: 首先是要理解其中的原理,再去操作就很简单了,下面老表就给大家说一下自己的观点(有点简单,但是老表我第一次学习的时候看着视频上的代码确实有点懵逼 ...
- Pycharm-professional-2017.2.3破解安装
初次接触Python,大神推荐使用PyCharm IDE工具,作为小白初生牛犊不怕虎,上手就来最新版的,这也许不是最好的选择,但在以后慢慢琢磨深入之后,会选择适合自己的版本,现参考把安装过程分享出来. ...
- 【Error】 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
mysql 登录输入密码有时会碰到如题的错误. 错误描述: Error 1045 (28000): Access denied for user 'root'@'localhost' (using p ...