.net core 验证Microsoft RulesEngine中的表达式
我在基于.NETCore的项目中一直在使用nuget包。我想知道在运行.net core 验证Microsoft RulesEngine中的表达式,.net-core,rule-engine,.net Core,Rule Engine,我在基于.NETCore的项目中一直在使用nuget包。我想知道在运行RulesEngine.Execute之前是否有方法验证表达式的格式。根据自述文件,表达式是一个。此外,还有一个可用于验证根对象的模式(WorkflowRules)的方法,但它不会验证规则下使用的表达式。 我找到了一种确保表达式有效的方法。在下面的代码中,如果发生异常,则表示表达式的格式无效: using System.Linq.Dynamic.Core; using System.Linq.Expressio
RulesEngine.Execute
之前是否有方法验证表达式的格式。根据自述文件,表达式是一个。此外,还有一个可用于验证根对象的模式(WorkflowRules)的方法,但它不会验证规则下使用的表达式。
我找到了一种确保表达式有效的方法。在下面的代码中,如果发生异常,则表示表达式的格式无效:
using System.Linq.Dynamic.Core;
using System.Linq.Expressions;
...
private bool Evaluate<TParameterType>(TParameterType fact, string rule)
{
var parameter = Expression.Parameter(typeof(TParameterType));
try
{
var lambdaExpression = DynamicExpressionParser.ParseLambda(new[] { parameter }, null, rule);
return (bool) lambdaExpression.Compile().DynamicInvoke(fact);
}
catch
{
return false;
}
}
使用System.Linq.Dynamic.Core;
使用System.Linq.Expressions;
...
私有布尔求值(TParameterType事实,字符串规则)
{
var参数=表达式参数(typeof(TParameterType));
尝试
{
var lambdaExpression=DynamicExpressionParser.ParseLambda(新[]{parameter},null,rule);
return(bool)lambdaExpression.Compile().DynamicInvoke(事实);
}
抓住
{
返回false;
}
}