忘记哪里转过来的,自己mark一下

//// <summary>
/// 动态求值
/// </summary>
public class Evaluator
{
/// <summary>
/// 计算结果,如果表达式出错则抛出异常
/// </summary>
/// <param name="statement">表达式,如"1+2+3+4"</param>
/// <returns>结果</returns>
public static object Eval(string statement)
{
return _evaluatorType.InvokeMember("Eval", BindingFlags.InvokeMethod, null, _evaluator, new object[] { statement });
}
static Evaluator()
{
//构造JScript的编译驱动代码
CodeDomProvider provider = CodeDomProvider.CreateProvider("JScript"); CompilerParameters parameters;
parameters = new CompilerParameters();
parameters.GenerateInMemory = true; CompilerResults results;
results = provider.CompileAssemblyFromSource(parameters, _jscriptSource); Assembly assembly = results.CompiledAssembly;
_evaluatorType = assembly.GetType("Evaluator"); _evaluator = Activator.CreateInstance(_evaluatorType);
} private static object _evaluator = null;
private static Type _evaluatorType = null;
//// <summary>
/// JScript代码
/// </summary>
private static readonly string _jscriptSource = @"class Evaluator
{
public function Eval(expr : String) : String
{
return eval(expr);
}
}";
}

C# 编译JS -Evaluator的更多相关文章

  1. 理解Babel是如何编译JS代码的及理解抽象语法树(AST)

    Babel是如何编译JS代码的及理解抽象语法树(AST) 1. Babel的作用是?   很多浏览器目前还不支持ES6的代码,但是我们可以通过Babel将ES6的代码转译成ES5代码,让所有的浏览器都 ...

  2. Cocos2d 编译js为jsc bytecode文件

    使用: cocos jscompile -s XXX(目录名,会递归) -d (输出的目录)   但编译后的jsc比原来的js更大了     如果只是为了代码的保密性,也许只需要用yuicompres ...

  3. MyEclipse设置不编译js部分

    https://jingyan.baidu.com/album/ca41422fe094251eae99ede7.html?picindex=1 步骤: 1)选中当前工程,右键单击properties ...

  4. 预编译 - Js三部曲

    预编译前奏 imply global - 暗示全局变量, window - 全局域 任何变量未经声明即赋值,该变量为全局所有 window 一切声明的 "全局" 变量,归windo ...

  5. .Net jsc.exe 编译js 成exe

  6. 反爬虫之JS反编译:PyExecJS

    PyExecJS是python运行JavaScript代码的包 安装: pip install  PyExecJS (或者easy_install PyExecJS) 依赖:  需要有执行JS的程序, ...

  7. Atitit.dart语言的特性  编译时js语言大总结

    Atitit.dart语言的特性  编译时js语言大总结 1. 原型环境1 1.1. Dart可以编译js3 2. 第二个期待的理由是Dart的语言特性,没有什么特别特性好像,类似java c#一小时 ...

  8. 关于es6及以上的js编译成es5

    问题:es6及以上版本在IE浏览器上不能执行起来,但Chrome浏览器上轻松运行,解决兼容IE的问题就需要使用babel:这个可以去babel的官网去查看; 关于babel的简单使用,有两种方式: 1 ...

  9. js中的预编译

    预编译 js执行顺序: 词法/语法分析 预编译 解释执行 js中存在预编译 function demo() { console.log('I am demo'); } demo(); //I am d ...

随机推荐

  1. FileZilla - Windows XP经典软件系列

    官网: https://filezilla-project.org/ 下载: http://sourceforge.net/projects/filezilla/ 版本:V3.9.0.1 (支持XP最 ...

  2. 网易音乐API

    本次分析的是网易音乐API 歌曲搜索API:http://music.163.com/api/search/get/web?csrf_token= 需要用POST来获取 参数: Referer=htt ...

  3. docker-tomcat-nginx 反向代理和负载均衡

    1.部署tomcat镜像 下载官方的tomcat镜像. -jre7 启动docker容器,2个实例,分别映射不同的端口号, ~/work/sample-webapps/[v1.0|v2.0]/下面存放 ...

  4. Photoshop Cs5 64位系统破解版下载(内含破解方法)

    Photoshop Cs5 64位系统是电影.视频和多媒体领域的专业人士, 使用 3D 和动画的图形和 Web 设计人员, 以及工程和科学领域的专业人士的理想选择,下面提供Photoshop Cs5  ...

  5. Metrics.NET report to Zabbix

    废话不多说,先上git地址 https://github.com/binking338/Metrics.Reporters.ZabbixReporter 实现了Metrics.NET到Zabbix的报 ...

  6. THE ONE THING PEOPLE WILL MASSIVELY OVERPAY FOR (有一个东西人们是愿意出高价购买的)

    THE ONE THING PEOPLE WILL MASSIVELY OVERPAY FOR有一个东西人们是愿意出高价购买的 by GARY VAYNERCHUK 点此直达湾区日报简评 I don' ...

  7. 洛谷P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib

    P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib 284通过 425提交 题目提供者该用户不存在 标签USACO 难度普及- 提交  讨论  题解 最新讨论 超时怎么办? ...

  8. ENVI如何打开IRS P6的AWIFS的ges及LISS3的ges文件?

    AWIFS文件下文件名如下:ID2010236001.hdrID2010236001_2.gesID2010236001_3.gesID2010236001_4.gesID2010236001_5.g ...

  9. aspx网页相对布局

    网页的布局 <body bgcolor="#b6b7bc"> <form id="form1" runat="server" ...

  10. basis基本tcode

    SM21 ST11     SM50 查看work process 使用情况 操作相关的查询功能     SM## 常用tcode     SM01 锁定事务 SM04 用户清单 SM05 HTTP ...