.net core 验证Microsoft RulesEngine中的表达式

.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

我在基于.NETCore的项目中一直在使用nuget包。我想知道在运行
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;
}
}