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 });
}
}
}

最新文章

  1. 《虚拟伙伴》AR增强现实应用开发总结
  2. Git 创建本地仓库
  3. Spring MVC篇一、搭建Spring MVC框架
  4. Android之assets资源
  5. 在shell script中进行数值运算的两种方法
  6. java的 clone方法
  7. 平摊分析 Amortized Analysis ------geeksforgeeks翻译
  8. 拿什么拯救你,我的代码--c#编码规范实战篇 (转)
  9. raspberry树莓派安装CUPS实现打印服务器共享HP P1007打印机
  10. select resharper shortcuts scheme
  11. Python语言精要---上
  12. 《Python 学习手册4th》 第十二章 if测试和语法规则
  13. ASP.NET MVC导入excel到数据库
  14. 最简单的ADABOOST人脸检测程序。COPY执行,前提是你配置OpenCV周围环境
  15. polay定理总结
  16. wkhtmltox实现网页转换成图片或pdf
  17. spring项目出现无法加载主类
  18. .npy,.mat,.txt转换
  19. C语言:奇偶归一猜想
  20. [TopCoder14647]HiddenRabbits

热门文章

  1. 手写一款符合Promise/A+规范的Promise
  2. JS等比例缩放图片,限定最大宽度和最大高度
  3. 20145310 《Java程序设计》第2周学习总结
  4. php 与 c++ openssl 加密通信
  5. 采用OpenReplicator解析MySQL binlog
  6. 翻翻git之---可用作课程表/排班表的自定义table库ScrollTableView
  7. springboot2.1.3集成webservice及错误No operation was found with the name {...}解决办法
  8. 爬虫之动态HTML处理(Selenium与PhantomJS )执行 JavaScript 语句
  9. c#的逆向工程-IL指令集
  10. 在服务器 部署 asp.net core 报502.5的错