Csharp/C#教程:C# 执行Javascript脚本的方法步骤分享

前一阵子使用C#编写SCXML状态机,需要解析EMCScript表达式,使用了Jint库(https://github.com/sebastienros/jint/),当时感觉与C#之间的数据转换不是很方便。这两天有时间又关注了一下,发现新的3.0版本有了很大改进,在这里介绍给大家,供参考。

首先要安装nuget包,注意增加prerelease选项,安装最新的版本,使用dotnet命令行指令如下:

dotnet add  package Jint --prerelease

直接计算表达式:

Console.WriteLine("直接计算表达式:(1+2)*3"); var r1= e.Evaluate("(1+2)*3"); Console.WriteLine(r1);

字符串操作:

Console.WriteLine("字符串操作:'abc'.length"); var r2=e.Evaluate("'abc'.length"); Console.WriteLine(r2); Console.WriteLine("-----------------------"); Console.WriteLine("字符串操作:'abc'.substr(2)"); var r3=e.Evaluate("'abc'.substr(2)"); Console.WriteLine(r3);

可以使用SetValue给JS变量赋值:

var e2 = new Engine() .SetValue("x", 1) .SetValue("y",2); var r4=e2.Evaluate("x+y"); Console.WriteLine(r4);

可以使用对象进行C#和JS之间的数据交换:

var myobj= new Student { Name="张三" }; Console.WriteLine(myobj.Name); var e4 = new Engine() .SetValue("student", myobj) .Execute("student.Name = '李四'"); Console.WriteLine(myobj.Name);

可以将C#函数委托给JS引擎,在JS代码中调用这些函数:

Console.Write("将CSharp函数设置给Js引擎"); var engine = new Engine() .SetValue("log", new Action<object>(Console.WriteLine)); engine.Execute(@" function hello() { log('Hello World'); }; hello(); ");

也可以从CSharp 调用JS的函数:

Console.WriteLine("调用JS函数计算BMI"); var e5=new Engine() .Execute("function bmi(weight, height) { return weight/height/height; }"); Console.WriteLine(e5.Invoke("bmi",75,1.75));

可以引入CLI,从而在JS引擎中调用CLI中的函数:

Console.WriteLine("调用.Net函数写入文件"); var e6 = new Engine(cfg => cfg.AllowClr()); e6.Execute(@"var f=System.IO.StreamWriter('sayhello.log'); f.WriteLine('你好 !'); f.Dispose();");

示例可以从github下载:https://github.com/zhenl/CSharpScriptDemo,本文示例在JSInCSharp项目中。

到此这篇关于C# 执行Javascript脚本的方法步骤的文章就介绍到这了,更多相关C# 执行Javascript脚本内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1047097.html

(0)
上一篇 2022年2月11日
下一篇 2022年2月11日

精彩推荐