From 5b9826915a0a36e0a77adecec8f7895131cbdafe Mon Sep 17 00:00:00 2001 From: Edgardo Moreno Date: Tue, 21 Jan 2025 13:02:35 -0300 Subject: [PATCH] feat: add JSON serialization configuration and change SerializerSettings visibility to public - Added the `ConfigureJsonSettings` extension to customize JSON serialization settings in `WorkflowOptions`. - Changed `SerializerSettings` visibility from private to public to allow external access to Newtonsoft.Json configuration. Reason: When serializing objects like `Outcome` or `Steps`, some could not be serialized correctly. This change enables adjusting Newtonsoft.Json settings to meet specific requirements. --- .../ExtensionMethods.cs | 2 +- .../ServiceCollectionExtensions.cs | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 src/providers/WorkflowCore.Persistence.EntityFramework/ServiceCollectionExtensions.cs diff --git a/src/providers/WorkflowCore.Persistence.EntityFramework/ExtensionMethods.cs b/src/providers/WorkflowCore.Persistence.EntityFramework/ExtensionMethods.cs index 536ccc7b..584326e6 100644 --- a/src/providers/WorkflowCore.Persistence.EntityFramework/ExtensionMethods.cs +++ b/src/providers/WorkflowCore.Persistence.EntityFramework/ExtensionMethods.cs @@ -9,7 +9,7 @@ namespace WorkflowCore.Persistence.EntityFramework { internal static class ExtensionMethods { - private static JsonSerializerSettings SerializerSettings = new JsonSerializerSettings + public static JsonSerializerSettings SerializerSettings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All, ObjectCreationHandling = ObjectCreationHandling.Replace diff --git a/src/providers/WorkflowCore.Persistence.EntityFramework/ServiceCollectionExtensions.cs b/src/providers/WorkflowCore.Persistence.EntityFramework/ServiceCollectionExtensions.cs new file mode 100644 index 00000000..6e7cf87d --- /dev/null +++ b/src/providers/WorkflowCore.Persistence.EntityFramework/ServiceCollectionExtensions.cs @@ -0,0 +1,19 @@ +using System; +using System.Data.Common; +using Newtonsoft.Json; +using WorkflowCore.Interface; +using WorkflowCore.Models; +using WorkflowCore.Persistence.EntityFramework; +using WorkflowCore.Persistence.EntityFramework.Services; + +namespace Microsoft.Extensions.DependencyInjection +{ + public static class ServiceCollectionExtensions + { + public static WorkflowOptions ConfigureJsonSettings(this WorkflowOptions options, Action settings) + { + settings(ExtensionMethods.SerializerSettings); + return options; + } + } +}