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
更多开源项目: https://github.com/bianchenglequ/NetCodeTop
- End -
推荐阅读
Garnet:微软官方基于.Net 8开源缓存系统,可无需任何改动直接替代Redis,而且还更高性能!
ExcelDataReader:一个.Net高性能Excel开源读取器
Eval-Expression.NET:动态执行C#脚本,类似Javascript的Eval函数功能的更多相关文章
- c#动态执行字符串脚本(优化版)
像javascript中有eval()来执行动态代码,c#中是没有的,于是自己动手丰衣足食, 先来代码 1 using System; 2 using System.Data; 3 using Sys ...
- Javascript动态执行JS(new Function与eval比较)
new Function与eval可以动态执行JS,只要把拼接好的JS方法,然后以字符串的形式传入到这两个函数,可以执行,其中new Function用在模板引擎比较多. 用 Function 类直接 ...
- 动态执行python脚本
前言 存在许多独立的python脚本,这些脚本可能会增加,也可能会减少,现在需要按照某种顺序调度这些程序.在python的standard library中,有一个模块imp可以实现动态的调用ptho ...
- MYSQL动态查询拼接的表名的SQL脚本实现(MYSQL动态执行SQL脚本)
可以使用MYSQL的预处理逻辑:https://dev.mysql.com/doc/refman/8.0/en/sql-syntax-prepared-statements.html 例如: pr ...
- 如何用javascript 的eval动态执行一个需要传对象参数的函数
代码如下: var method = 'setRiskItemAmount_'+id[1]+'(id[0],id[2],this.value);'; console.log(method); eval ...
- JMeter实现登录初始化(类似LR的init函数功能实现)
1.项目背景 在做项目的性能测试过程中,发现系统的登录功能非常慢,所以,在涉及到登录才能操作的场景,尽量避开登录操作 解决方案: 首选设置“登录并生成签名值”线程组
- Python 清理HTML标签类似PHP的strip_tags函数功能(二)
没有发现Python 有现成的类似功能模块,所以昨天写了个简单的 strip_tags 但还有些问题,今天应用到采集上时进行了部分功能的完善, 1. 对自闭和标签处理 2. 以及对标签参数的过滤 fr ...
- Python 实现类似PHP的strip_tags函数功能,并且可以自定义设置保留标签
最近在研究 Python ,发现用的还是很不习惯,很多PHP里面很简单的功能在Python 里面都得找半天,而且很多功能都得自己实现. 今天做个采集,需要过滤内容中的标签,搞了一下午,貌似终于搞出来了 ...
- Android程序执行shell脚本
在做Android应用时,经常需要执行shell脚本,以快速实现某些功能: 在Android应用程序中执行shell脚本可以省去一大堆繁琐的代码,还可以避免不必要的错误: 比如:拷贝文件夹时,可以执行 ...
- javaScript中eval()方法转换json对象
<script language="javascript"> var user = '{name:"张三",age:23,'+ 'address:{ ...
随机推荐
- python项目实战——一元线性回归预测模型
文章目录 1.一元线性回归简介 2.环境准备 3.数据准备 4.可视化数据 5.构建线性回归模型 在数据科学领域,预测分析是一项核心技能.一元线性回归作为预测分析的基石,能够帮助我们理解一个自变量如何 ...
- DHorse v1.6.0 发布,基于 k8s 的发布平台
版本说明 新增特性 支持Codeup(阿里云云效)代码仓库: 支持环境的自动部署: 优化特性 管理员角色部署环境部需要审批: 优化页面展示: 升级指南 升级指南 DHorse介绍 DHorse是一个轻 ...
- 深度解读GaussDB逻辑解码技术原理
本文分享自华为云社区<[GaussTech技术专栏]GaussDB逻辑解码技术原理>,作者:GaussDB 数据库. 1.背景 随着国内各大行业数字化改造步伐的加快,异构数据库数据同步的需 ...
- C221110C. SolarPea与网格
C221110C. SolarPea与网格 是怎么想到dp定义的? 思考下面这个情景: 如果一个人在 \(x\), 另一个人在 \(y \ (x \lt y)\), 那么在 \(x\) 的人会把 \( ...
- 说说Java的类加载机制?究竟什么是双亲委派模型?
首先引入一个概念,什么是Java类加载器? 一句话总结:类加载器(class loader)用来加载 Java 类到 Java 虚拟机中. 官方总结:Java类加载器(英语:Java Classloa ...
- 【转载】hyperNeat进化神经网络算法——HyperNEAT Explained——Advancing Neuroevolution
原文地址: HyperNEAT Explained: Advancing Neuroevolution Expanding NeuroEvolution Last week, I wrote an a ...
- 华为三折屏Mate XT
相关: https://www.youtube.com/watch?v=vMx3kVnp11Q
- games101_Homework4
实现四个点的贝塞尔曲线 作业描述: • bezier:该函数实现绘制 Bézier 曲线的功能.它使用一个控制点序列和一个 OpenCV::Mat 对象作为输入,没有返回值.它会使 t 在 0 到 1 ...
- KTL (0.9.2,通达信mdt文件)
K,K线,Candle蜡烛图. T,技术分析,工具平台 L,公式Language语言使用c++14,Lite小巧简易. 项目仓库:https://github.com/bbqz007/KTL 国内仓库 ...
- 成本立降50%!在EKS上借助Karpenter部署大模型
原文链接: https://aws.amazon.com/cn/blogs/containers/scaling-a-large-language-model-with-nvidia-nim-on-a ...