From 129527b33a8088e50efc8d877119256384e424e1 Mon Sep 17 00:00:00 2001 From: Charles d'Avernas Date: Fri, 11 Oct 2024 15:43:32 +0200 Subject: [PATCH] fix(Expressions): Fixed the ExpressionEvaluatorExtensions to properly handle enumerable expression objects Signed-off-by: Charles d'Avernas --- .../Extensions/IExpressionEvaluatorExtensions.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Neuroglia.Data.Expressions.Abstractions/Extensions/IExpressionEvaluatorExtensions.cs b/src/Neuroglia.Data.Expressions.Abstractions/Extensions/IExpressionEvaluatorExtensions.cs index e1251baf..7e527a1a 100644 --- a/src/Neuroglia.Data.Expressions.Abstractions/Extensions/IExpressionEvaluatorExtensions.cs +++ b/src/Neuroglia.Data.Expressions.Abstractions/Extensions/IExpressionEvaluatorExtensions.cs @@ -60,6 +60,12 @@ public static partial class IExpressionEvaluatorExtensions if (expression is string expressionString && expressionString.IsRuntimeExpression()) return await evaluator.EvaluateAsync(expressionString, input, arguments, null, cancellationToken).ConfigureAwait(false); else return expression; } + else if (expression.GetType().IsEnumerable() && expression.GetType() != typeof(string) && expression.GetType().GetGenericType(typeof(IDictionary<,>)) == null && expression.GetType().GetGenericType(typeof(EquatableDictionary<,>)) == null) + { + var results = new List(); + foreach (var value in (IEnumerable)expression) results.Add((await evaluator.EvaluateAsync(value, input, arguments, null, cancellationToken).ConfigureAwait(false))!); + return results; + } var expressionProperties = (IDictionary)JsonSerializer.Default.Convert(expression, typeof(IDictionary))!; var outputProperties = new Dictionary(); foreach (var property in expressionProperties) @@ -91,7 +97,7 @@ public static partial class IExpressionEvaluatorExtensions } outputProperties[property.Key] = value!; } - return expectedType == null || expectedType.IsAssignableFrom(typeof(Dictionary)) ? outputProperties : Serialization.Json.JsonSerializer.Default.Convert(outputProperties, expectedType); + return expectedType == null || expectedType.IsAssignableFrom(typeof(Dictionary)) ? outputProperties : JsonSerializer.Default.Convert(outputProperties, expectedType); } ///