diff --git a/src/modules/Elsa.Workflows.Core/Serialization/Converters/PolymorphicObjectConverterFactory.cs b/src/modules/Elsa.Workflows.Core/Serialization/Converters/PolymorphicObjectConverterFactory.cs index a522ccb8c..4a8cdcb7e 100644 --- a/src/modules/Elsa.Workflows.Core/Serialization/Converters/PolymorphicObjectConverterFactory.cs +++ b/src/modules/Elsa.Workflows.Core/Serialization/Converters/PolymorphicObjectConverterFactory.cs @@ -2,26 +2,45 @@ using System.Dynamic; using System.Text.Json; using System.Text.Json.Serialization; using Elsa.Expressions.Contracts; +using Elsa.Expressions.Services; namespace Elsa.Workflows.Serialization.Converters; /// /// A JSON converter factory that creates instances. /// -public class PolymorphicObjectConverterFactory(IWellKnownTypeRegistry wellKnownTypeRegistry) : JsonConverterFactory +public class PolymorphicObjectConverterFactory : JsonConverterFactory { + private readonly IWellKnownTypeRegistry _wellKnownTypeRegistry; + + /// + /// A JSON converter factory that creates instances. + /// + public PolymorphicObjectConverterFactory(IWellKnownTypeRegistry wellKnownTypeRegistry) + { + _wellKnownTypeRegistry = wellKnownTypeRegistry; + } + + /// + /// Default constructor for use with attributes. + /// + public PolymorphicObjectConverterFactory() + { + _wellKnownTypeRegistry = WellKnownTypeRegistry.CreateDefault(); + } + /// public override bool CanConvert(Type typeToConvert) { if (typeToConvert.IsClass && typeToConvert == typeof(object) || typeToConvert == typeof(ExpandoObject) - || typeToConvert == typeof(Dictionary)) - return true; - - if (typeToConvert.IsInterface - && typeToConvert == typeof(IDictionary)) - return true; + || typeToConvert == typeof(Dictionary)) + return true; + + if (typeToConvert.IsInterface + && typeToConvert == typeof(IDictionary)) + return true; return false; } @@ -30,8 +49,8 @@ public class PolymorphicObjectConverterFactory(IWellKnownTypeRegistry wellKnownT public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) { if (typeof(IDictionary).IsAssignableFrom(typeToConvert)) - return new PolymorphicDictionaryConverter(options, wellKnownTypeRegistry); + return new PolymorphicDictionaryConverter(options, _wellKnownTypeRegistry); - return new PolymorphicObjectConverter(wellKnownTypeRegistry); + return new PolymorphicObjectConverter(_wellKnownTypeRegistry); } } \ No newline at end of file