使用Eval-Expression.NET动态执行C#代码
2024-07-18
47
我们都知道在JavaScript中,我们可以通过Eval来执行JavaScript字符串代码。
下面推荐一个.Net版本的Eval的开源项目Eval-Expression.NET。Eval-Expression.NET GitHub地址:https://github.com/zzzprojects/Eval-Expression.NET
Eval-Expression.NET是一个非常强大工具,使得开发人员可以动态编译和执行C#代码和表达式。通过C#反射,还能轻松访问公共和私有方法、字段、属性值,并创建对象实例。
Eval-Expression.NET使用示例
安装Eval-Expression.NET库
Install-Package Z.Expression.NET
简单执行
using Z.Expressions;
int result = Eval.Execute<int>("X + Y", new { X = 1, Y = 2 });
//输出 3
Console.WriteLine(result);
复杂代码
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);
参数占位符
int result = Eval.Execute<int>("{0} + {1}", 1, 2);
动态类的属性
dynamic expandoObject = new ExpandoObject();
expandoObject.X = 1;
expandoObject.Y = 2;
int result = Eval.Execute<int>("X + Y", expandoObject);
字符串扩展方法
string s = "X + Y";
int result = s.Execute<int>(new { X = 1, Y = 2 });
委托
using Z.Expressions;
//委托
var compiled = Eval.Compile<Func<int, int, int>>("X + Y", "X", "Y");
int result = compiled(3, 4);
//输出 7
Console.WriteLine(result);
扩展方法委托
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);
更新于:3个月前赞一波!
相关文章
- .NET 9 即将推出的功能Task.WhenEach
- .NET 使用HttpClientFactory+Polly替代直接使用HttpClient
- C# Const 和 ReadOnly的区别
- .NET Framework被淘汰了吗?
- 强大的 .NET Mock 框架 单元测试模拟库Moq使用教程
- Asp.Net Core进程内托管 和 进程外托管的区别
- C# 使用Barrier进行多线程同步
- 什么是.NET云原生应用程序?
- ASP.NET Core实现多语言本地化Web应用程序
- PDFiumCore | .NET Core PDF 处理渲染库
- C#发送邮件代码简洁示例(附源码下载)
- .NET Blazor 2024年发展趋势
- 解决.NET JAVA PHP中写入及读取memcache中数据不一致的方法
- .NET调试Windows服务的方法
- C# Word转换成Pdf的方法
- c#使用MongoDB开发LBS应用
- 【说站】Python代码中编译是什么
- hprose for C#使用教程
- ASP.NET Core 2.1中的ActionResult<T>
- .NET Core 3.0创建一个单独的可执行文件
文章评论
评论问答