在某些项目中,引入公式也是一个方便用户的需求,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" />