C# EVAL EXPRESSION ——表达式引擎Eval Expression

Posted webmote

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# EVAL EXPRESSION ——表达式引擎Eval Expression相关的知识,希望对你有一定的参考价值。

序言

在某些项目中,引入公式也是一个方便用户的需求,C#公式库最有名的莫过于Eval Expression,
看个例子:

var compiled_3 = Eval.Compile<Func<string, string, string>>("var a=  X.ToUpper() + Y; var b=  X.ToUpper() + Y;var c=  X.ToUpper() + Y;var d=  X.ToUpper() + Y;" +
                "var a1=  X.ToUpper() + Y; var b2=  X.ToUpper() + Y;var c2=  X.ToUpper() + Y;var d2=  X.ToUpper() + Y;" +
                "return a +d;", "X", "Y");
var results = compiled_3("City", "ABC");

是的,这个样子操作,感觉c#就是一个脚本语言了。

推荐

公式操作、表达式动态语句,可以考虑使用 Eval Expression。

解决方案:利用Eval Expression插件
插件官网:http://eval-expression.net/

特别文件

基于net5,我准备了特别文件 ,不需要每个月的重新下载了,可以使用到2099年。 下载参见地址

使用说明

因为是引用dll的关系,需要自己配置需要的包,包清单如下:

<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="5.0.0" />
<PackageReference Include="Microsoft.OData.Core" Version="7.8.3" />
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
<PackageReference Include="System.Collections.Concurrent" Version="4.3.0" />
<PackageReference Include="System.Collections.NonGeneric" Version="4.3.0" />
<PackageReference Include="System.Configuration.ConfigurationManager" Version="4.5.0" />
<PackageReference Include="System.Data.Common" Version="4.3.0" />
<PackageReference Include="System.Linq.Queryable" Version="4.3.0" />
<PackageReference Include="System.Reflection.Emit" Version="4.7.0" />
<PackageReference Include="System.Reflection.TypeExtensions" Version="4.5.0" />
<PackageReference Include="System.Xml.XPath" Version="4.3.0" />

以上是关于C# EVAL EXPRESSION ——表达式引擎Eval Expression的主要内容,如果未能解决你的问题,请参考以下文章

Python标准库 内置函数eval expression globals None locals None

eval函数

Python中eval()函数的使用

Python eval() 函数

python eval lmbda

Python学习笔记011——内置函数eval()