当前位置: 欣欣网 > 码农

盘点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 」,免费领取

觉得好看 点个在看👇