From ce7b40f117d763147bbd4830c7afe533add6df74 Mon Sep 17 00:00:00 2001 From: Simon G Date: Tue, 27 Apr 2021 15:06:28 +0200 Subject: [PATCH] - use xml lib --- Mystify/Mystify.csproj | 1 + Mystify/Settings/SettingsManager.cs | 40 ++++++++++------------------- 2 files changed, 14 insertions(+), 27 deletions(-) diff --git a/Mystify/Mystify.csproj b/Mystify/Mystify.csproj index da7d086..3155621 100644 --- a/Mystify/Mystify.csproj +++ b/Mystify/Mystify.csproj @@ -25,5 +25,6 @@ + diff --git a/Mystify/Settings/SettingsManager.cs b/Mystify/Settings/SettingsManager.cs index 7b877ca..698f310 100644 --- a/Mystify/Settings/SettingsManager.cs +++ b/Mystify/Settings/SettingsManager.cs @@ -4,8 +4,8 @@ using System; using System.IO; -using System.Xml; -using System.Xml.Serialization; +using Lib.Xml; +using Lib.Xml.Interfaces; using Mystify.Settings.Interfaces; using Mystify.Settings.Xml; @@ -16,34 +16,20 @@ namespace Mystify.Settings private const string SETTINGS_FILE_EXTENSION = "mys"; private readonly string _settingsFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Mystify", $"Settings.{SETTINGS_FILE_EXTENSION}"); + private readonly IXmlReader _xmlReader; + private readonly IXmlWriter _xmlWriter; + private ISettings? _settings; - public ISettings Settings => _settings ??= Load(); - - public void Save() - { - FileStream file = File.OpenWrite(_settingsFilePath); - - XmlWriter xmlWriter = XmlWriter.Create(file, new XmlWriterSettings {Indent = true}); - XmlSerializer xmlSerializer = new(typeof(XmlSettings)); - - XmlSerializerNamespaces xmlSerializerNamespaces = new(); - xmlSerializerNamespaces.Add("", ""); - - xmlSerializer.Serialize(xmlWriter, Settings, xmlSerializerNamespaces); - } - - private ISettings Load() + public SettingsManager() { - if (!File.Exists(_settingsFilePath)) - return new XmlSettings(); - - FileStream file = File.OpenRead(_settingsFilePath); - - XmlReader xmlReader = XmlReader.Create(file); - XmlSerializer xmlSerializer = new(typeof(XmlSettings)); - - return (XmlSettings?) xmlSerializer.Deserialize(xmlReader) ?? new XmlSettings(); + _xmlReader = new XmlReader(); + _xmlWriter = new XmlWriter(); } + + public ISettings Settings => _settings ??= Load(); + + public void Save() => _xmlWriter.Write(Settings, _settingsFilePath); + private ISettings Load() => _xmlReader.Read(_settingsFilePath); } } \ No newline at end of file