Eval-Expression.NET:动态执行C#脚本,类似Javascript的Eval函数功能

我们都知道在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、委托

复制代码
//委托
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

  • End -

更多开源项目: https://github.com/bianchenglequ/NetCodeTop

我是编程乐趣,一个.Net开发经验老程序员,欢迎"关注"我,每天为你分享开源项目和编程知识。

也欢迎加入【.Net技术编程交流社区】,和大家共同学习交流!,
点击加入 :https://bbs.csdn.net/topics/613465368

推荐阅读

Garnet:微软官方基于.Net 8开源缓存系统,可无需任何改动直接替代Redis,而且还更高性能!

ExcelDataReader:一个.Net高性能Excel开源读取器

一个C#开源工具库,集成了超过1000个扩展方法

13个热门.Net开源项目

盘点6个.Net热门AI项目

相关推荐
kyriewen2 分钟前
我把 10 道面试题答案真跑了一遍:6 道是错的
前端·javascript·面试
WebInfra43 分钟前
Rspack 2.3 发布:联手 SWC 团队带来全新编译器
前端·javascript·github
FRing032 小时前
JavaScript入门到精通三十一(原型继承、原型链)
开发语言·前端·javascript
程序员大阳2 小时前
副队长JavaScript教程(52)-DOM操作元素的内容
javascript·dom·innertext·innerhtml·value·内容操作
裕波4 小时前
苏千|从 cnpm 到 Vite+:AI 时代的开发者体验演进
javascript
console.log('npc')4 小时前
周期任务功能完整实现:CRON 编辑器 + 模板变量 + 执行历史
javascript·vue.js·编辑器
程序员大阳4 小时前
副队长JavaScript教程(58)-基于DOM的网页留言板开发
javascript·实例·dom·案例·留言板
咚咚咚小柒4 小时前
【前端】LangChain.js学习
前端·javascript·人工智能·typescript·langchain·vue·ai编程
程序员大阳6 小时前
副队长JavaScript教程(55)-DOM节点增删改查
javascript·dom·增删改查·节点·克隆
程序0076 小时前
天地图实现收货地址定位
前端·javascript·css