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

本文介绍了一个名为Eval-Expression.NET的开源项目,它允许开发者在.NET中动态编译和执行C#代码,支持访问对象属性、执行复杂计算,并展示了多种用法示例,包括委托和扩展方法。
摘要由CSDN通过智能技术生成

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

觉得好看 点个在看👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值