Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion src/OneWare.Core/Dock/OneWareDockSerializer.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System.Collections.ObjectModel;
using System.Text;
using Dock.Model.Core;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

Expand All @@ -10,7 +11,7 @@ public sealed class OneWareDockSerializer : IDockSerializer
{
private readonly JsonSerializerSettings _settings;

public OneWareDockSerializer(IServiceProvider provider)
public OneWareDockSerializer(IServiceProvider provider, ILogger logger)
{
_settings = new JsonSerializerSettings
{
Expand All @@ -20,10 +21,16 @@ public OneWareDockSerializer(IServiceProvider provider)
ReferenceLoopHandling = ReferenceLoopHandling.Serialize,
ContractResolver = new OneWareContractResolver(typeof(ObservableCollection<>), provider),
NullValueHandling = NullValueHandling.Ignore,
SerializationBinder = new SilentErrorSerializationBinder(),
Converters =
{
new NoSerializeLayoutListConverter(),
new KeyValuePairConverter()
},
Error = (sender, args) =>
{
logger.LogError($"JSON Deserialization Error at {args.ErrorContext.Path}: {args.ErrorContext.Error.Message}");
args.ErrorContext.Handled = true;
}
};
}
Expand Down
18 changes: 18 additions & 0 deletions src/OneWare.Core/Dock/SilentErrorSerializationBinder.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using Newtonsoft.Json.Serialization;

namespace OneWare.Core.Dock;

public class SilentErrorSerializationBinder : DefaultSerializationBinder
{
public override Type BindToType(string? assemblyName, string typeName)
{
try
{
return base.BindToType(assemblyName, typeName);
}
catch
{
return null;
}
}
}
4 changes: 2 additions & 2 deletions src/OneWare.Core/Services/MainDockService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,13 @@ public class MainDockService : Factory, IMainDockService
public MainDockService(ICompositeServiceProvider serviceProvider, IPaths paths, IWindowService windowService,
IApplicationStateService applicationStateService,
WelcomeScreenViewModel welcomeScreenViewModel, IFileWatchService fileWatchService,
MainDocumentDockViewModel mainDocumentDockViewModel)
MainDocumentDockViewModel mainDocumentDockViewModel, ILogger logger)
{
_paths = paths;
_welcomeScreenViewModel = welcomeScreenViewModel;
_mainDocumentDockViewModel = mainDocumentDockViewModel;
_fileWatchService = fileWatchService;
_serializer = new OneWareDockSerializer(serviceProvider);
_serializer = new OneWareDockSerializer(serviceProvider, logger);

_documentViewRegistrations.Add("*", typeof(EditViewModel));

Expand Down
Loading