C# 动态执行JS
2024-10-19 19:24:04
有时候需要,在程序中灵活的嵌入自定义的计算逻辑,使用C#加载JS脚本形式可以实现;
// 添加引用 using Microsoft.JScript;
string jsStr = "var i=100; i++; i=i*100; var obj = {a:i};"; Stopwatch sw = new Stopwatch();
sw.Start();
object ret1 = null;
try
{
ret1 = Eval.JScriptEvaluate(jsStr, VsaEngine.CreateEngine());
}
catch (Exception ex)
{
MessageBox.Show(ex.StackTrace.ToString(), "执行失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
} sw.Stop(); string res = "";
if (ret1 is ArrayObject)
{
// 数组
ArrayObject arr = (ArrayObject)ret1; res = arr[].ToString();
}
else if (ret1 is JSObject)
{
// 对象
JSObject obj = (JSObject)ret1; res = obj["a"].ToString();
}
else
{
// 单值
res = ret1.ToString();
} MessageBox.Show(res + " 用时:" + sw.ElapsedMilliseconds.ToString() + "ms");
最新文章
- 关于计算机的ID和用户ID之间的关系
- ADO。Net(二)——防止SQL注入攻击
- SuperSocket架构设计示意图【转】
- [改善Java代码]动态加载不适合数组
- VB.NET中LINQ TO List泛型查询语句(分组,聚合函数)
- Webbrowser判断页面加载完成
- URL中含有+号,出现错误“请求筛选模块被配置为拒绝包含双重转义序列的请求”的解决方法
- HTML重要标签及属性详解
- Python3 从入门到出门
- 【firefox】关闭firefox缓存
- Android的RadioButton和checkBox的用法-android学习之旅(十九)
- 从零开始学安全(三十九)●FCK编辑器解析漏洞
- springBoot的数据库操作
- CentOS----kdump failed
- 程序员编程艺术:面试和算法心得-(转 July)
- Dockerfile指令学习 (转)
- 如何一键式搭建微信小程序
- json多态序列化
- Send or receive files via Xshell
- Linux 命令 ";cp"; 代码实现简介