Kenric Nugteren 2 месяцев назад
Родитель
Сommit
fce18564ce

+ 1 - 1
prs.desktop/PRSDesktop.csproj

@@ -937,7 +937,7 @@
       <PackageReference Include="Syncfusion.Themes.Office2019White.WPF" Version="29.2.7" />
       <PackageReference Include="Syncfusion.Themes.SystemTheme.WPF" Version="29.2.7" />
       <PackageReference Include="Syncfusion.Tools.WPF" Version="29.2.7" />
-      <PackageReference Include="System.Collections.Immutable" Version="9.0.6" />
+      <PackageReference Include="System.Collections.Immutable" Version="9.0.7" />
       <PackageReference Include="System.Drawing.Common" Version="8.0.6" />
       <PackageReference Include="System.IO.Ports" Version="8.0.0" />
       <PackageReference Include="System.ServiceModel.Primitives" Version="8.0.0" />

+ 2 - 2
prs.server/PRSServer.csproj

@@ -86,7 +86,7 @@
             <TreatAsUsed>true</TreatAsUsed>
         </PackageReference>
         <PackageReference Include="DeviceId.Windows.Wmi" Version="6.6.0" />
-        <PackageReference Include="FluentResults" Version="3.16.0" />
+        <PackageReference Include="FluentResults" Version="4.0.0" />
         <PackageReference Include="Fody" Version="6.8.1">
             <PrivateAssets>all</PrivateAssets>
             <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
@@ -104,7 +104,7 @@
         <PackageReference Include="Syncfusion.Licensing" Version="29.2.7" />
         <PackageReference Include="Syncfusion.Pdf.Wpf" Version="29.2.7" />
         <PackageReference Include="Syncfusion.Shared.WPF.Classic" Version="19.4.0.56" />
-        <PackageReference Include="System.Collections.Immutable" Version="9.0.6" />
+        <PackageReference Include="System.Collections.Immutable" Version="9.0.7" />
         <PackageReference Include="System.Drawing.Common" Version="8.0.6" />
         <PackageReference Include="System.ServiceProcess.ServiceController" Version="8.0.0" />
     </ItemGroup>

+ 1 - 1
prs.shared/PRS.Shared.csproj

@@ -55,7 +55,7 @@
 
   <ItemGroup>
     <PackageReference Include="RestSharp" Version="111.2.0" />
-    <PackageReference Include="System.Collections.Immutable" Version="9.0.6" />
+    <PackageReference Include="System.Collections.Immutable" Version="9.0.7" />
   </ItemGroup>
   
 </Project>

+ 18 - 18
prs.stores/Events/Event.cs

@@ -1,10 +1,7 @@
-using com.sun.jmx.mbeanserver;
-using Comal.Classes;
+using Comal.Classes;
 using Expressive;
 using InABox.Core;
 using InABox.Database;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Serialization;
 using System;
 using System.Collections;
 using System.Collections.Generic;
@@ -12,6 +9,9 @@ using System.Diagnostics.CodeAnalysis;
 using System.Linq;
 using System.Reflection;
 using System.Text;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+using System.Text.Json.Serialization.Metadata;
 using System.Threading.Tasks;
 
 namespace PRS.Shared.Events;
@@ -50,6 +50,9 @@ public class EventData<T, TDataModel> : IEventData
         Actions = new List<IEventAction<T>>();
     }
 
+    [JsonConstructor]
+    private EventData(): this(default) { }
+
     public Notification GenerateNotification(TDataModel model) => Event.GenerateNotification(model);
 }
 
@@ -57,31 +60,28 @@ public static class EventUtils
 {
     #region Serialisation
 
-    private class WritablePropertiesOnlyResolver : DefaultContractResolver
-    {
-        protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
-        {
-            IList<JsonProperty> props = base.CreateProperties(type, memberSerialization);
-            return props.Where(p => p.Writable).ToList();
-        }
-    }
-
-    private static JsonSerializerSettings SerializationSettings()
+    private static JsonSerializerOptions SerializationSettings()
     {
         var settings = Serialization.CreateSerializerSettings();
-        settings.TypeNameHandling = TypeNameHandling.Auto;
-        settings.ContractResolver = new WritablePropertiesOnlyResolver();
+        settings.TypeInfoResolver = new DefaultJsonTypeInfoResolver
+        {
+            Modifiers =
+            {
+                Serialization.WritablePropertiesOnly
+            }
+        };
+        settings.Converters.Add(new PolymorphicConverter());
         return settings;
     }
 
     public static string Serialize(IEventData data)
     {
-        return JsonConvert.SerializeObject(data, typeof(IEventData), SerializationSettings());
+        return JsonSerializer.Serialize(data, typeof(IEventData), SerializationSettings());
     }
 
     public static IEventData Deserialize(string json)
     {
-        return JsonConvert.DeserializeObject<IEventData>(json, SerializationSettings())!;
+        return JsonSerializer.Deserialize<IEventData>(json, SerializationSettings())!;
     }
 
     #endregion

+ 7 - 4
prs.stores/Events/SaveEvent.cs

@@ -3,12 +3,12 @@ using InABox.Core;
 using InABox.Database;
 using InABox.Scripting;
 using Inflector;
-using Newtonsoft.Json;
 using System;
 using System.Collections.Generic;
 using System.Diagnostics.CodeAnalysis;
 using System.Linq;
 using System.Text;
+using System.Text.Json.Serialization;
 
 namespace PRS.Shared.Events;
 
@@ -169,7 +169,8 @@ public class PropertyChangedSaveEventTrigger<T> : IEventTrigger<SaveEvent<T>, Sa
     [JsonIgnore]
     public IProperty? TriggerProperty { get; set; }
 
-    [JsonProperty(PropertyName = "TriggerProperty")]
+    [JsonInclude]
+    [JsonPropertyName("TriggerProperty")]
     private string? _property
     {
         get => TriggerProperty?.Name;
@@ -413,7 +414,7 @@ public class Module
 public class CreateEntitySaveEventAction<T> : IEventAction<SaveEvent<T>>
     where T : Entity, new()
 {
-    [JsonProperty(Order = 1)]
+    [JsonPropertyOrder(1)]
     public Type? EntityType { get; set; }
 
     [JsonIgnore]
@@ -518,7 +519,9 @@ public class Module
 
     #region Serialization Stuff
 
-    [JsonProperty(Order = 2, PropertyName = "Initializers")]
+    [JsonPropertyOrder(2)]
+    [JsonInclude]
+    [JsonPropertyName("Initializers")]
     private PropertyInitializerSerializationItem[] _initializers
     {
         get => Initializers.ToArray(x => new PropertyInitializerSerializationItem { Property = x.Property.Name, Value = x.Value });