當前位置: 妍妍網 > 碼農

Eval-Expression.NET:動態執行C#指令碼,類似Javascript的Eval函式功能

2024-04-03碼農

我們都知道在JavaScript中,我們可以透過Eval來執行JavaScript字串程式碼。

下面推薦一個.Net版本的Eval的開源計畫。

01

計畫簡介

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

02

使用範例

1、依賴庫安裝

Install-Package Z.Expression.NET

2、簡單公式

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

3、復雜程式碼

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);

4、參數占位符

int result = Eval.Execute<int>("{0} + {1}", 1, 2);

5、動態類的內容

dynamic expandoObject = new ExpandoObject();expandoObject.X = 1;expandoObject.Y = 2;int result = Eval.Execute<int>("X + Y", expandoObject);

6、字串擴充套件方法

string s = "X + Y";int result = s.Execute<int>(new { X = 1, Y = 2 });

7、委托

using Z.Expressions;//委托var compiled = Eval.Compile<Func<int, int, int>>("X + Y", "X", "Y");int result = compiled(3, 4);//輸出 7Console.WriteLine(result);

8、擴充套件方法委托

using Z.Expressions;//擴充套件方法委托string s = "X + Y";var compiled = s.Compile<Func<int, int, int>>("X", "Y");//輸出 7int result = compiled(3, 4);Console.WriteLine(result);

03

計畫地址

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

覺得好看 點個在看👇