- use xml lib

master
Simon G 5 years ago
parent 0fbd1d419f
commit ce7b40f117
  1. 1
      Mystify/Mystify.csproj
  2. 36
      Mystify/Settings/SettingsManager.cs

@ -25,5 +25,6 @@
<ProjectReference Include="..\Lib.ProcessManaging\Lib.ProcessManaging.csproj" /> <ProjectReference Include="..\Lib.ProcessManaging\Lib.ProcessManaging.csproj" />
<ProjectReference Include="..\Lib.Tools.Avalonia\Lib.Tools.Avalonia.csproj" /> <ProjectReference Include="..\Lib.Tools.Avalonia\Lib.Tools.Avalonia.csproj" />
<ProjectReference Include="..\Lib.Tools\Lib.Tools.csproj" /> <ProjectReference Include="..\Lib.Tools\Lib.Tools.csproj" />
<ProjectReference Include="..\Lib.Xml\Lib.Xml.csproj" />
</ItemGroup> </ItemGroup>
</Project> </Project>

@ -4,8 +4,8 @@
using System; using System;
using System.IO; using System.IO;
using System.Xml; using Lib.Xml;
using System.Xml.Serialization; using Lib.Xml.Interfaces;
using Mystify.Settings.Interfaces; using Mystify.Settings.Interfaces;
using Mystify.Settings.Xml; using Mystify.Settings.Xml;
@ -16,34 +16,20 @@ namespace Mystify.Settings
private const string SETTINGS_FILE_EXTENSION = "mys"; 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 string _settingsFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Mystify", $"Settings.{SETTINGS_FILE_EXTENSION}");
private ISettings? _settings; private readonly IXmlReader<XmlSettings> _xmlReader;
private readonly IXmlWriter<ISettings, XmlSettings> _xmlWriter;
public ISettings Settings => _settings ??= Load(); private ISettings? _settings;
public void Save() public SettingsManager()
{ {
FileStream file = File.OpenWrite(_settingsFilePath); _xmlReader = new XmlReader<XmlSettings>();
_xmlWriter = new XmlWriter<ISettings, XmlSettings>();
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 ISettings Settings => _settings ??= Load();
{
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(); public void Save() => _xmlWriter.Write(Settings, _settingsFilePath);
} private ISettings Load() => _xmlReader.Read(_settingsFilePath);
} }
} }
Loading…
Cancel
Save