返回

使用Eval-Expression.NET动态执行C#代码

2024-04-06 Eval Eval-Expression .NET 动态执行 C# 代码 745 0

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

您可能感兴趣:

阿里云 云服务器 99元1年 2核2G 3M固定带宽 续费与新购同价

DOVE 网络加速器 梯子 免费 试用

椤堕儴