/// <summary> /// Save a Workspace to json. /// </summary> /// <returns>A string representing the serialized WorkspaceModel.</returns> internal static string ToJson(this WorkspaceModel workspace, EngineController engine) { var logger = engine != null?engine.AsLogger() : null; var settings = new JsonSerializerSettings { Error = (sender, args) => { args.ErrorContext.Handled = true; Console.WriteLine(args.ErrorContext.Error); }, ReferenceLoopHandling = ReferenceLoopHandling.Ignore, TypeNameHandling = TypeNameHandling.Auto, Formatting = Formatting.Indented, Culture = CultureInfo.InvariantCulture, Converters = new List <JsonConverter> { new ConnectorConverter(logger), new WorkspaceWriteConverter(engine), new DummyNodeWriteConverter(), new TypedParameterConverter(), new PackageDependencyConverter(logger), }, ReferenceResolverProvider = () => { return(new IdReferenceResolver()); } }; var json = JsonConvert.SerializeObject(workspace, settings); var result = ReplaceTypeDeclarations(json); return(result); }