Browse Source

Made SErializerSettings public on SErialization

Kenric Nugteren 5 months ago
parent
commit
0bf3da7a94
1 changed files with 23 additions and 19 deletions
  1. 23 19
      InABox.Core/Serialization.cs

+ 23 - 19
InABox.Core/Serialization.cs

@@ -38,29 +38,33 @@ namespace InABox.Core
 
         private static JsonSerializerSettings SerializerSettings(bool indented = true)
         {
-            if (_serializerSettings == null)
-            {
-                _serializerSettings = new JsonSerializerSettings
-                {
-                    DateParseHandling = DateParseHandling.DateTime,
-                    DateFormatHandling = DateFormatHandling.IsoDateFormat,
-                    DateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind
-                };
+            _serializerSettings ??= CreateSerializerSettings();
+            _serializerSettings.Formatting = indented ? Formatting.Indented : Formatting.None;
 
-                _serializerSettings.Converters.Add(new CoreTableJsonConverter());
-                //serializerSettings.Converters.Add(new DateTimeJsonConverter());
+            return _serializerSettings;
+        }
 
-                _serializerSettings.Converters.Add(new FilterJsonConverter());
-                _serializerSettings.Converters.Add(new ColumnJsonConverter());
-                _serializerSettings.Converters.Add(new SortOrderJsonConverter());
-                _serializerSettings.Converters.Add(new UserPropertiesJsonConverter());
-                //_serializerSettings.Converters.Add(new BaseObjectJSONConverter());
+        public static JsonSerializerSettings CreateSerializerSettings(bool indented = true)
+        {
+            var settings = new JsonSerializerSettings
+            {
+                DateParseHandling = DateParseHandling.DateTime,
+                DateFormatHandling = DateFormatHandling.IsoDateFormat,
+                DateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind
+            };
 
-                _serializerSettings.ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor;
-            }
-            _serializerSettings.Formatting = indented ? Formatting.Indented : Formatting.None;
+            settings.Converters.Add(new CoreTableJsonConverter());
+            //serializerSettings.Converters.Add(new DateTimeJsonConverter());
 
-            return _serializerSettings;
+            settings.Converters.Add(new FilterJsonConverter());
+            settings.Converters.Add(new ColumnJsonConverter());
+            settings.Converters.Add(new SortOrderJsonConverter());
+            settings.Converters.Add(new UserPropertiesJsonConverter());
+            //_serializerSettings.Converters.Add(new BaseObjectJSONConverter());
+
+            settings.ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor;
+            settings.Formatting = indented ? Formatting.Indented : Formatting.None;
+            return settings;
         }
 
         public static string Serialize(object? o, bool indented = false)