零、准备

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 简易示例相关推荐

  1. 组织学图像弱监督腺体分割的在线简易示例挖掘

    文章目录 Online Easy Example Mining for Weakly-Supervised Gland Segmentation from Histology Images 摘要 本文 ...

  2. 13000.tcp服务器简易示例程序(linux)

    文章目录 1 简易服务器代码 1 简易服务器代码 #include <stdio.h> #include <sys/types.h> /* See NOTES */ #incl ...

  3. html5游戏开发box2djs,Box2D.js简易示例

    Box2dWeb example //在页面加载完毕后启动整个Box2D程序 function init() { //简化缩写各个对象名称 var b2Vec2 = Box2D.Common.Math ...

  4. 对自注意力(self-attention)的理解以及基于pytorch的简易示例

    简介 自注意力(self-attention):一个seq2seq的映射运算,具体而言,也就是将输入向量通过映射(或者说某种函数运算)输出对应的结果. 向量的维度都为. 对于每个输出,就是用自注意力运 ...

  5. HTML + CSS + Javascript 简易示例

    要实现的效果: 页面中有一个表格显示水果的数据. 鼠标移动到表格内,就改变当前行背景色,移动到单价单元格鼠标就变成手型. 单价单元格点击进行编辑,对输入进行容错处理,编辑后计算更新小计和总计. 点击删 ...

  6. JavaScript与.NET应用程序交互_实验1

    JavaScript与.NET应用程序交互_实验1 C#调用JavaScript函数 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/ex_net/ ...

  7. php+rsa生成签名sign,PHP 做 RSA 签名 生成订单(支付宝例子)

    /组合签名 $a=time(); $b=substr($a, 1); //生成随机订单号 $orderid= $b.mt_rand(10000,99999); //合作身份者id,以2088开头的16 ...

  8. 技术大佬们都推荐的vim学习指南来了,值得收藏!

    「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑ 作者 | kbsc13,京东算法工程师,研究领域计算机视觉 来源 | 机器学习与计算机视觉(ID:AI_Developer) 编辑 | ...

  9. 多维数组的行优先和列优先, 数据描述语言

    多维数组的行优先和列优先 这里以numpy为工具,介绍一下多维数组的行优先和列优先的概念. 首先我们生成一个3x4的数组: arr = np.arange(12).reshape(3,4) 它的形状是 ...

最新文章

  1. SQL语句性能优化--LECCO SQL Expert
  2. 第八章 工厂方法模式
  3. NYOJ 84 阶乘的0 数论
  4. Elastic:为 Elasticsearch 启动 https 访问使数据访问更安全
  5. bitmap设置图片尺寸缩小,避免内存溢出/OutOfMemoryError的优化方法
  6. 创建订单 - 扣除商品库存与订单状态保存
  7. 三星a7108android 7.0,三星A7108系统运行速度变慢变卡顿了_怎么进行具体的刷机教程...
  8. LRU LeetCode
  9. 存根类 测试代码 java_测试双打:模拟,假人和存根
  10. Spring Cloud —— RocketMQ 的消息类型
  11. python julian date_Python 的内嵌time模板翻译及说明
  12. query登录linux命令,在Linux系统中使用sqlcmd命令连接与查询SQL Server
  13. 面试官系统精讲Java源码及大厂真题 - 01 开篇词:为什么学习本专栏
  14. 通过c# 实现自定义属性改变触发自定义事件 ,理解自定义事件及其触发过程
  15. [转]程序员真实写真:35岁前成功的12条黄金法则
  16. eclipse中JPA插件的安装与使用
  17. SQLSTATE[HY000] [2013] Lost connection to MySQL...
  18. 一起谈.NET技术,ASP.NET 中JSON 的序列化和反序列化
  19. 4.数据库表的高级查询
  20. scipy库中的stats模块

热门文章

  1. 福建省计算机应用基础一级考试,福建省高等院校学生计算机一级考试大纲
  2. 12019.LMT84模拟温度传感器
  3. 7006.vue项目之电商项目实战1-环境搭建及后台接口测试
  4. 1012.log4cplus项目应用
  5. 如何JQ将下拉列表的值传送给php,JQuery设置获取下拉菜单某个选项的值(比较全)...
  6. 【嵌入式Linux】嵌入式Linux应用开发基础知识之串口应用编程
  7. 从程序员到项目经理(四):外行可以领导内行吗
  8. httpd svn 编译安装_linux下php7安装与Apache配置
  9. 【LeetCode】【HOT】234. 回文链表(存入数组)
  10. 【力扣】NO.136.只出现一次的数字