首页 > 编程语言 >Eval-Expression.NET:动态执行C#脚本,类似Javascript的Eval函数功能

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

时间:2025-01-10 09:22:43浏览次数:1  
标签:Execute C# Javascript int 开源 result Eval Net

我们都知道在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开源读取器

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

13个热门.Net开源项目

盘点6个.Net热门AI项目

标签:Execute,C#,Javascript,int,开源,result,Eval,Net
From: https://www.cnblogs.com/chingho/p/18651548

相关文章

  • macOS的PrivilegedHelperTools文件夹
    在 macOS 上,/Library/PrivilegedHelperTools 文件夹是一个特殊的位置,用于存放可以以更高权限运行的辅助工具或守护进程。这些工具通常由各种应用程序安装,以执行需要超出普通应用程序沙箱权限的任务,例如Proxy的应用,常见都是带有helper的应用。让我们更详细地了解这个目录及其用......
  • CDS标准视图:预期应收 I_FutureAccountsReceivables
    视图名称:预期应收视图类型:参数视图代码:点击查看代码//Documentationaboutannotationscanbefoundathttp://help.sap.comsearchingforCDSannotations//InsertedbyVDMCDSSuitePlugin@ObjectModel.usageType.sizeCategory:#XXL//InsertedbyVDMCDSSuiteP......
  • 有效解决 PbootCMS 网站提示“执行SQL发生错误!错误:DISK I/O ERROR”的问题
    定期清理缓存定期手动清理缓存文件,确保磁盘空间不会被占用过多。可以通过后台管理系统的“系统设置”模块进行清理。监控磁盘空间使用系统监控工具(如 df-h 命令)定期检查磁盘空间使用情况。确保有足够的磁盘空间来存储网站文件和数据库。优化数据库定期优化S......
  • 解决 PbootCMS IP 黑名单只能填写 10 多条 IP 地址的问题
    在使用PbootCMS的IP黑名单功能时,如果发现只能添加10多条IP地址,多了保存不了,通常是因为 ay_config 表中存储IP黑名单的字段长度有限。通过修改数据库表结构,可以增加该字段的长度,从而支持更多的IP地址。以下是详细的解决步骤:一、问题分析字段长度限制:ay_config......
  • 在使用 PbootCMS 的 IP 黑名单功能时,如果发现只能添加 10 多条 IP 地址,多了保存不了,通
    1.备份数据库在进行任何数据库操作之前,请务必备份数据库,以防数据丢失。mysqldump-uyour_username-pyour_database_name>backup.sql2.登录数据库管理工具使用phpMyAdmin或其他数据库管理工具登录到您的MySQL数据库。3.修改 ay_config 表结构找到 ay_conf......
  • Navicat Premium 16、17 破解版激活详细教程
    前言NavicatPremium是一套可创建多个连接的数据库开发工具,让你从单一应用程序中同时连接MySQL、MariaDB、MongoDB、SQLServer、Oracle、PostgreSQL和SQLite。它与OceanBase数据库及AmazonRDS、AmazonAurora、AmazonRedshift、MicrosoftAzure、OracleCloud、Mongo......
  • show processlist和show full processlist说明
    showprocesslist和showfullprocesslistprocesslist命令的输出结果显示了有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态帮助识别出有问题的查询语句等。如果是root帐号,能看到所有用户的当前连接。如果是其他普通帐号,则只能看到自己占用的连接。showp......
  • 修改 PbootCMS 中“未查询到任何数据”的提示文字
    在PbootCMS中,默认情况下,当查询没有返回任何数据时,系统会显示“未查询到任何数据”的提示信息。如果您希望修改这个提示文字,可以通过编辑 Paging.php 文件来实现。以下是详细的步骤:一、定位文件找到 Paging.php 文件打开PbootCMS的源码目录,找到 core/view/Paging.ph......
  • PbootCMS 调取友情链接列表代码
    在PbootCMS中,您可以使用特定的标签来调取和显示友情链接列表。以下是如何在网站的任意位置使用这些标签的详细说明和示例代码。一、标签说明标签名称:{pboot:link}作用:用于依次输出指定分组的友情链接。适用范围:全站任意地方均可使用。二、模板代码{pboot:linkgid=*......
  • PbootCMS 的 {pboot:link} 标签,您可以轻松地在网站的任意位置调取和显示友情链接列表
    PbootCMS的 {pboot:link} 标签,您可以轻松地在网站的任意位置调取和显示友情链接列表。确保正确设置 gid 和 num 参数,并根据需要调整模板和样式,以实现最佳的用户体验。假设您有一个友情链接分组,其ID为1,并且您希望输出15个友情链接,可以使用以下代码:{pboot:linkgid......