From 90e4b4680c22cfbec8ef486416c5de31c3741be2 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Tue, 18 Apr 2023 00:01:05 +0200 Subject: [PATCH] Update PayloadSerializer to support Type serialization --- .../Services/JsonPayloadSerializer.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/modules/Elsa.Workflows.Core/Services/JsonPayloadSerializer.cs b/src/modules/Elsa.Workflows.Core/Services/JsonPayloadSerializer.cs index fc25f62ea..e221f76e4 100644 --- a/src/modules/Elsa.Workflows.Core/Services/JsonPayloadSerializer.cs +++ b/src/modules/Elsa.Workflows.Core/Services/JsonPayloadSerializer.cs @@ -3,6 +3,7 @@ using System.Text.Json.Serialization; using System.Text.Json.Serialization.Metadata; using Elsa.Workflows.Core.Contracts; using Elsa.Workflows.Core.Serialization.Converters; +using Microsoft.Extensions.DependencyInjection; namespace Elsa.Workflows.Core.Services; @@ -11,6 +12,16 @@ namespace Elsa.Workflows.Core.Services; /// public class JsonPayloadSerializer : IPayloadSerializer { + private readonly IServiceProvider _serviceProvider; + + /// + /// Initializes a new instance of the class. + /// + public JsonPayloadSerializer(IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + } + /// public string Serialize(object payload) { @@ -43,6 +54,9 @@ public class JsonPayloadSerializer : IPayloadSerializer options.Converters.Add(new JsonStringEnumConverter()); options.Converters.Add(JsonMetadataServices.TimeSpanConverter); options.Converters.Add(new PolymorphicObjectConverterFactory()); + options.Converters.Add(GetService()); return options; } + + private T GetService() where T : notnull => ActivatorUtilities.GetServiceOrCreateInstance(_serviceProvider); } \ No newline at end of file