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