當前位置: 妍妍網 > 碼農

盤點2個動態執行C#開源指令碼引擎

2024-06-26碼農

推薦2個C#開源指令碼引擎, 方便我們在計畫中,動態執行C#指令碼。

一、 Eval-Expression.NET

https://github.com/zzzprojects/Eval-Expression.NET

Eval-Expression.NET是一個非常強大工具,使得開發人員可以動態編譯和執行C#程式碼和運算式。透過C#反射,還能輕鬆存取公共和私有方法、欄位、內容值,並建立物件例項。

使用方法

1、簡單方法

using Z.Expressions;int result = Eval.Execute<int>("X + Y", new { X = 1, Y = 2 });//輸出 3Console.WriteLine(result);

2、復雜程式碼

using Z.Expressions;int result = Eval.Execute<int>(@" var list = new List<int>() { 1, 2, 3, 4, 5 }; var filter = list.Where(x => x < 4); return filter.Sum(x => x);");//輸出 6Console.WriteLine(result);

2、 DynamicExpresso

https://github.com/dynamicexpresso/DynamicExpresso

DynamicExpresso內建了解析邏輯,它能夠將.NET的lambda運算式或委托轉化為C#語句,並在記憶體中的動態執行。

它不生成任何組譯,而是構建了一個運算式樹,在執行時執行。

支持如加減乘除、比較、邏輯操作等基本運算子以及C#中的型別測試和轉換。

可以聲明和使用變量,包括自訂型別的例項;也可以設定參數,便於多次呼叫同一運算式時改變輸入值。

能夠直接從字串解析出.NET委托或Lambda運算式,方便整合到業務邏輯中。 支持.NET Core 3.1及以上版本和.NET 4.6.2, 支持C#的部份語法特性,如條件運算子、三元運算子、型別檢查等。

使用方法

簡單運算式

using DynamicExpresso;var target = new Interpreter();double result = target.Eval<double>("Math.Pow(x, y) + 5",new Parameter("x", typeof(double), 10),new Parameter("y", typeof(double), 2));//輸出105Console.WriteLine(result);

變量

using DynamicExpresso;//定義變量並賦值var target = new Interpreter().SetVariable("myVar", 23);//輸出:33Console.WriteLine(target.Eval("myVar + 10"));

最後推薦加入我的 裏麵包含7個教程,其中有:【 三層架構教程 】與【DDD 領域驅動設計架構教程 】。

- End -

分享一套.NetCore從入門到精通視訊教程

點選下方公眾號卡片,關註我

回復「 888 」,免費領取

覺得好看 點個在看👇