我们都知道在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开源读取器
标签:Execute,C#,Javascript,int,开源,result,Eval,Net From: https://blog.csdn.net/daremeself/article/details/144923788