推薦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 });
//輸出 3
Console.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);");
//輸出 6
Console.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));
//輸出105
Console.WriteLine(result);
變量
using DynamicExpresso;
//定義變量並賦值
var target = new Interpreter().SetVariable("myVar", 23);
//輸出:33
Console.WriteLine(target.Eval("myVar + 10"));
最後推薦加入我的 , 裏麵包含7個教程,其中有:【 三層架構教程 】與【DDD 領域驅動設計架構教程 】。
- End -
分享一套.NetCore從入門到精通視訊教程
點選下方公眾號卡片,關註我
回復「 888 」,免費領取
覺得好看 點個在看👇