欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#?執(zhí)行Javascript腳本的方法步驟

 更新時間:2022年01月05日 10:33:33   作者:尋找無名的特質(zhì)  
本文主要介紹了C#?執(zhí)行Javascript腳本的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

前一陣子使用C#編寫SCXML狀態(tài)機(jī),需要解析EMCScript表達(dá)式,使用了Jint庫(https://github.com/sebastienros/jint/),當(dāng)時感覺與C#之間的數(shù)據(jù)轉(zhuǎn)換不是很方便。這兩天有時間又關(guān)注了一下,發(fā)現(xiàn)新的3.0版本有了很大改進(jìn),在這里介紹給大家,供參考。

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

dotnet add ?package Jint --prerelease

直接計算表達(dá)式:

Console.WriteLine("直接計算表達(dá)式:(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);

可以使用對象進(jìn)行C#和JS之間的數(shù)據(jù)交換:

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

可以將C#函數(shù)委托給JS引擎,在JS代碼中調(diào)用這些函數(shù):

Console.Write("將CSharp函數(shù)設(shè)置給Js引擎");
var engine = new Engine()
    .SetValue("log", new Action<object>(Console.WriteLine));
 engine.Execute(@"
    function hello() { 
        log('Hello World');
    };
 
    hello();
");

也可以從CSharp 調(diào)用JS的函數(shù):

Console.WriteLine("調(diào)用JS函數(shù)計算BMI");
var e5=new Engine()
    .Execute("function bmi(weight, height) { return weight/height/height; }");
Console.WriteLine(e5.Invoke("bmi",75,1.75));

可以引入CLI,從而在JS引擎中調(diào)用CLI中的函數(shù):

Console.WriteLine("調(diào)用.Net函數(shù)寫入文件");
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項目中。

到此這篇關(guān)于C# 執(zhí)行Javascript腳本的方法步驟的文章就介紹到這了,更多相關(guān)C# 執(zhí)行Javascript腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#導(dǎo)入導(dǎo)出Excel數(shù)據(jù)的兩種方法

    C#導(dǎo)入導(dǎo)出Excel數(shù)據(jù)的兩種方法

    這篇文章主要為大家詳細(xì)介紹了C#導(dǎo)入導(dǎo)出Excel數(shù)據(jù)的兩種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Unity2021發(fā)布WebGL與網(wǎng)頁交互問題的解決

    Unity2021發(fā)布WebGL與網(wǎng)頁交互問題的解決

    本文主要介紹了Unity2021發(fā)布WebGL與網(wǎng)頁交互問題的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 使用C#的aforge類庫識別驗證碼實例

    使用C#的aforge類庫識別驗證碼實例

    這篇文章主要介紹了使用C#的aforge類庫識別驗證碼實例,aforge類庫是一個非常強(qiáng)大的類庫,包括計算機(jī)視覺與人工智能、圖像處理、神經(jīng)網(wǎng)絡(luò)、遺傳算法、機(jī)器學(xué)習(xí)、機(jī)器人等領(lǐng)域,需要的朋友可以參考下
    2014-08-08
  • C#中的DataTable查詢實戰(zhàn)教程

    C#中的DataTable查詢實戰(zhàn)教程

    這篇文章主要介紹了C#中的DataTable查詢實戰(zhàn)教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • C#設(shè)計模式實現(xiàn)之生成器模式和責(zé)任鏈模式

    C#設(shè)計模式實現(xiàn)之生成器模式和責(zé)任鏈模式

    學(xué)完設(shè)計模式之后,你就感覺它會慢慢地影響到你寫代碼的思維方式,下面這篇文章主要給大家介紹了關(guān)于C#設(shè)計模式實現(xiàn)之生成器模式和責(zé)任鏈模式的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • c#遠(yuǎn)程html數(shù)據(jù)抓取實例分享

    c#遠(yuǎn)程html數(shù)據(jù)抓取實例分享

    這篇文章主要介紹了c#遠(yuǎn)程html數(shù)據(jù)抓取的方法,大家參考使用吧
    2013-12-12
  • C#多線程傳遞參數(shù)及任務(wù)用法示例

    C#多線程傳遞參數(shù)及任務(wù)用法示例

    這篇文章主要介紹了C#多線程傳遞參數(shù)及任務(wù)用法,結(jié)合簡單實例形式分析了C#多線程的使用及相關(guān)的參數(shù)傳遞與任務(wù)創(chuàng)建等使用技巧,需要的朋友可以參考下
    2016-06-06
  • C#實現(xiàn)全局快捷鍵功能

    C#實現(xiàn)全局快捷鍵功能

    這篇文章介紹了C#實現(xiàn)全局快捷鍵功能的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#中參數(shù)個數(shù)可變的方法實例分析

    C#中參數(shù)個數(shù)可變的方法實例分析

    這篇文章主要介紹了C#中參數(shù)個數(shù)可變的方法,以一個簡單實例分析了C#中參數(shù)個數(shù)可變的方法,主要是使用params關(guān)鍵字來實現(xiàn)的,是C#編程中比較實用的技巧,需要的朋友可以參考下
    2014-11-11
  • WPF實現(xiàn)鐘表效果

    WPF實現(xiàn)鐘表效果

    這篇文章主要為大家詳細(xì)介紹了WPF實現(xiàn)鐘表效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02

最新評論