1. <dd id="erndk"></dd>
                1. C# 執行Javascript腳本

                  互聯網 2022/1/4 12:08:54

                  前一陣子使用C#編寫SCXML狀態機,需要解析EMCScript表達式,使用了Jint庫(https://github.com/sebastienros/jint/),當時感覺與C#之間的數據轉換不是很方便。這兩天有時間又關注了一下,發現新的3.0版本有了很大改進,在這里介紹給大家,供參考。 首先要安裝nuget包,注…

                  前一陣子使用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項目中。

                  隨時隨地學軟件編程-關注百度小程序和微信小程序
                  關于找一找教程網

                  本站文章僅代表作者觀點,不代表本站立場,所有文章非營利性免費分享。
                  本站提供了軟件編程、網站開發技術、服務器運維、人工智能等等IT技術文章,希望廣大程序員努力學習,讓我們用科技改變世界。
                  [C# 執行Javascript腳本]http://www.yachtsalesaustralia.com/tech/detail-279873.html

                  贊(0)
                  關注微信小程序
                  程序員編程王-隨時隨地學編程

                  掃描二維碼或查找【程序員編程王】

                  可以隨時隨地學編程啦!

                  技術文章導航 更多>
                  国产在线拍揄自揄视频菠萝

                        1. <dd id="erndk"></dd>