public static EvaluationContext.EvaluationInfo TryEvaluateExpression(this IQueryElement expr, EvaluationContext context) { if (!context.TryGetValue(expr, out var info)) { var canBeEvaluated = TryEvaluateExpressionInternal(expr, context, out var result, out var errorMessage); info = new EvaluationContext.EvaluationInfo(canBeEvaluated, result, errorMessage); context.Register(expr, info); return(info); } return(info !); }
public static bool TryEvaluateExpression(this IQueryElement expr, EvaluationContext context, out object?result, out string?errorMessage) { if (!context.TryGetValue(expr, out var info)) { var canBeEvaluated = TryEvaluateExpressionInternal(expr, context, out result, out errorMessage); info = new EvaluationContext.EvaluationInfo(canBeEvaluated, result, errorMessage); context.Register(expr, info); return(info.IsEvaluated); } result = info !.Value; errorMessage = info.ErrorMessage; return(info.IsEvaluated); }