Jurassic.ScriptEngine 简易示例
零、准备
1. 到官网(http://jurassic.codeplex.com/releases)下载最新版本的Jurassic.ScriptEngine Dll。
2. 确保项目是4.0框架及以上,引入dll。
3. 添加"using Jurassic;"语句。
一、宿主调用脚本
0. 最开始要创建一个脚本对象
ScriptEngine sc = new ScriptEngine();
1. 下面的例子演示了如何计算表达式:
int i = sc.Evaluate<int>("1 + 1");
Console.WriteLine(i);
结果为:
2
2. 下面的例子演示了如何获取脚本中的全局对象:
对于没有返回值或者舍弃返回值的语句,可以用Execute方法执行
sc.Execute("var i = 1;");
int i = sc.GetGlobalValue<int>("i");
Console.WriteLine(i);
当然也可以这样执行
sc.Execute("var i = 1;");
int i = sc.Evaluate<int>("i");
Console.WriteLine(i);
结果为:
1
3. 下面的例子演示了如何调用脚本中的函数
sc.Execute("function add(a,b){return a+b;}");
int i = sc.Evaluate<int>("add(1,2);");
Console.WriteLine(i);
结果为:
3
4. 调用函数时动态传入参数 add函数同上
int i = sc.CallGlobalFunction<int>("add", 1, 2);
Console.WriteLine(i);
结果为:
3
二、脚本调用宿主
1. 调用宿主的方法
sc.SetGlobalFunction("ConsoleWriteln", new Action<string>(Console.WriteLine));
sc.Execute("ConsoleWriteln('hello');");
结果为:
hello
2. 调用宿主的对象 ConsoleWriteln同上
sc.SetGlobalValue("hello", "hello");
sc.Execute("ConsoleWriteln(hello);");
结果为:
hello
要注意delegate不能转换为js的function对象 所以两个函数不能写错
如果要传入js基本类型之外的对象 请开启"sc.EnableExposedClrTypes = true;"
Jurassic.ScriptEngine 简易示例相关推荐
- 组织学图像弱监督腺体分割的在线简易示例挖掘
文章目录 Online Easy Example Mining for Weakly-Supervised Gland Segmentation from Histology Images 摘要 本文 ...
- 13000.tcp服务器简易示例程序(linux)
文章目录 1 简易服务器代码 1 简易服务器代码 #include <stdio.h> #include <sys/types.h> /* See NOTES */ #incl ...
- html5游戏开发box2djs,Box2D.js简易示例
Box2dWeb example //在页面加载完毕后启动整个Box2D程序 function init() { //简化缩写各个对象名称 var b2Vec2 = Box2D.Common.Math ...
- 对自注意力(self-attention)的理解以及基于pytorch的简易示例
简介 自注意力(self-attention):一个seq2seq的映射运算,具体而言,也就是将输入向量通过映射(或者说某种函数运算)输出对应的结果. 向量的维度都为. 对于每个输出,就是用自注意力运 ...
- HTML + CSS + Javascript 简易示例
要实现的效果: 页面中有一个表格显示水果的数据. 鼠标移动到表格内,就改变当前行背景色,移动到单价单元格鼠标就变成手型. 单价单元格点击进行编辑,对输入进行容错处理,编辑后计算更新小计和总计. 点击删 ...
- JavaScript与.NET应用程序交互_实验1
JavaScript与.NET应用程序交互_实验1 C#调用JavaScript函数 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/ex_net/ ...
- php+rsa生成签名sign,PHP 做 RSA 签名 生成订单(支付宝例子)
/组合签名 $a=time(); $b=substr($a, 1); //生成随机订单号 $orderid= $b.mt_rand(10000,99999); //合作身份者id,以2088开头的16 ...
- 技术大佬们都推荐的vim学习指南来了,值得收藏!
「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑ 作者 | kbsc13,京东算法工程师,研究领域计算机视觉 来源 | 机器学习与计算机视觉(ID:AI_Developer) 编辑 | ...
- 多维数组的行优先和列优先, 数据描述语言
多维数组的行优先和列优先 这里以numpy为工具,介绍一下多维数组的行优先和列优先的概念. 首先我们生成一个3x4的数组: arr = np.arange(12).reshape(3,4) 它的形状是 ...
最新文章
- SQL语句性能优化--LECCO SQL Expert
- 第八章 工厂方法模式
- NYOJ 84 阶乘的0 数论
- Elastic:为 Elasticsearch 启动 https 访问使数据访问更安全
- bitmap设置图片尺寸缩小,避免内存溢出/OutOfMemoryError的优化方法
- 创建订单 - 扣除商品库存与订单状态保存
- 三星a7108android 7.0,三星A7108系统运行速度变慢变卡顿了_怎么进行具体的刷机教程...
- LRU LeetCode
- 存根类 测试代码 java_测试双打:模拟,假人和存根
- Spring Cloud —— RocketMQ 的消息类型
- python julian date_Python 的内嵌time模板翻译及说明
- query登录linux命令,在Linux系统中使用sqlcmd命令连接与查询SQL Server
- 面试官系统精讲Java源码及大厂真题 - 01 开篇词:为什么学习本专栏
- 通过c# 实现自定义属性改变触发自定义事件 ,理解自定义事件及其触发过程
- [转]程序员真实写真:35岁前成功的12条黄金法则
- eclipse中JPA插件的安装与使用
- SQLSTATE[HY000] [2013] Lost connection to MySQL...
- 一起谈.NET技术,ASP.NET 中JSON 的序列化和反序列化
- 4.数据库表的高级查询
- scipy库中的stats模块
热门文章
- 福建省计算机应用基础一级考试,福建省高等院校学生计算机一级考试大纲
- 12019.LMT84模拟温度传感器
- 7006.vue项目之电商项目实战1-环境搭建及后台接口测试
- 1012.log4cplus项目应用
- 如何JQ将下拉列表的值传送给php,JQuery设置获取下拉菜单某个选项的值(比较全)...
- 【嵌入式Linux】嵌入式Linux应用开发基础知识之串口应用编程
- 从程序员到项目经理(四):外行可以领导内行吗
- httpd svn 编译安装_linux下php7安装与Apache配置
- 【LeetCode】【HOT】234. 回文链表(存入数组)
- 【力扣】NO.136.只出现一次的数字