From d759624321615e3ec978ba395b2add5627d06f5c Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Fri, 10 Jan 2025 11:40:54 +0100 Subject: [PATCH] Refactor array type handling in variable and JSON converters Updated the logic to use `MakeArrayType` for array handling instead of generic collection types, ensuring consistency and better alignment with expected type structures. Adjustments were made in both the `VariableDefinitionMapper` and the `TypeJsonConverter`. --- .../Serialization/Converters/TypeJsonConverter.cs | 2 +- .../Mappers/VariableDefinitionMapper.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/Elsa.Workflows.Core/Serialization/Converters/TypeJsonConverter.cs b/src/modules/Elsa.Workflows.Core/Serialization/Converters/TypeJsonConverter.cs index c8a4e9a3d..24ff2dfcf 100644 --- a/src/modules/Elsa.Workflows.Core/Serialization/Converters/TypeJsonConverter.cs +++ b/src/modules/Elsa.Workflows.Core/Serialization/Converters/TypeJsonConverter.cs @@ -36,7 +36,7 @@ public class TypeJsonConverter : JsonConverter { var elementTypeAlias = typeAlias[..^"[]".Length]; var elementType = _wellKnownTypeRegistry.TryGetType(elementTypeAlias, out var t) ? t : Type.GetType(elementTypeAlias)!; - return typeof(List<>).MakeGenericType(elementType); + return elementType.MakeArrayType(); } return _wellKnownTypeRegistry.TryGetType(typeAlias, out var type) ? type : Type.GetType(typeAlias); diff --git a/src/modules/Elsa.Workflows.Management/Mappers/VariableDefinitionMapper.cs b/src/modules/Elsa.Workflows.Management/Mappers/VariableDefinitionMapper.cs index 787c5d341..2d741dbc6 100644 --- a/src/modules/Elsa.Workflows.Management/Mappers/VariableDefinitionMapper.cs +++ b/src/modules/Elsa.Workflows.Management/Mappers/VariableDefinitionMapper.cs @@ -30,7 +30,7 @@ public class VariableDefinitionMapper if (!_wellKnownTypeRegistry.TryGetTypeOrDefault(source.TypeName, out var type)) return null; - var valueType = source.IsArray ? typeof(ICollection<>).MakeGenericType(type) : type; + var valueType = source.IsArray ? type.MakeArrayType() : type; var variableGenericType = typeof(Variable<>).MakeGenericType(valueType); var variable = (Variable)Activator.CreateInstance(variableGenericType)!;