using System.IO; using System.Xml.Serialization; using Filtration.ObjectModel.ThemeEditor; namespace Filtration.ThemeEditor.Services { internal interface IThemePersistenceService { Theme LoadTheme(string filePath); void SaveTheme(Theme theme, string filePath); } internal class ThemePersistenceService : IThemePersistenceService { public Theme LoadTheme(string filePath) { var xmlSerializer = new XmlSerializer(typeof(Theme)); Theme loadedTheme; using (Stream reader = new FileStream(filePath, FileMode.Open)) { loadedTheme = (Theme)xmlSerializer.Deserialize(reader); } loadedTheme.FilePath = filePath; return loadedTheme; } public void SaveTheme(Theme theme, string filePath) { var xmlSerializer = new XmlSerializer(typeof(Theme)); using (Stream writer = new FileStream(filePath, FileMode.Create)) { xmlSerializer.Serialize(writer, theme); } } } }