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;"
展开阅读全文
©️2020 CSDN 皮肤主题: 黑客帝国 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值