我們都知道在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 });
//輸出 3
Console.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);");
//輸出 6
Console.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);
//輸出 7
Console.WriteLine(result);
8、擴充套件方法委托
using Z.Expressions;
//擴充套件方法委托
string s = "X + Y";
var compiled = s.Compile<Func<int, int, int>>("X", "Y");
//輸出 7
int result = compiled(3, 4);
Console.WriteLine(result);
03
計畫地址
https://github.com/zzzprojects/Eval-Expression.NET
覺得好看 點個在看👇