c# JScriptProvider包装
2024-08-28 17:37:52
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 });
}
}
}
最新文章
- 《虚拟伙伴》AR增强现实应用开发总结
- Git 创建本地仓库
- Spring MVC篇一、搭建Spring MVC框架
- Android之assets资源
- 在shell script中进行数值运算的两种方法
- java的 clone方法
- 平摊分析 Amortized Analysis ------geeksforgeeks翻译
- 拿什么拯救你,我的代码--c#编码规范实战篇 (转)
- raspberry树莓派安装CUPS实现打印服务器共享HP P1007打印机
- select resharper shortcuts scheme
- Python语言精要---上
- 《Python 学习手册4th》 第十二章 if测试和语法规则
- ASP.NET MVC导入excel到数据库
- 最简单的ADABOOST人脸检测程序。COPY执行,前提是你配置OpenCV周围环境
- polay定理总结
- wkhtmltox实现网页转换成图片或pdf
- spring项目出现无法加载主类
- .npy,.mat,.txt转换
- C语言:奇偶归一猜想
- [TopCoder14647]HiddenRabbits
热门文章
- 手写一款符合Promise/A+规范的Promise
- JS等比例缩放图片,限定最大宽度和最大高度
- 20145310 《Java程序设计》第2周学习总结
- php 与 c++ openssl 加密通信
- 采用OpenReplicator解析MySQL binlog
- 翻翻git之---可用作课程表/排班表的自定义table库ScrollTableView
- springboot2.1.3集成webservice及错误No operation was found with the name {...}解决办法
- 爬虫之动态HTML处理(Selenium与PhantomJS )执行 JavaScript 语句
- c#的逆向工程-IL指令集
- 在服务器 部署 asp.net core 报502.5的错