using System.Runtime.Serialization; using QwirkleClassLibrary.Games; namespace QwirkleClassLibrary.Persistences; public class GamePersistenceXml : IGamePersistence { public void SaveGame(Game game) { var serializer = new DataContractSerializer(typeof(Game), new DataContractSerializerSettings() { PreserveObjectReferences = true }); using (Stream writer = File.Create("Game.xml")) { serializer.WriteObject(writer, game); } } public Game LoadGame() { var serializer = new DataContractSerializer(typeof(Game)); using (Stream reader = File.OpenRead("Game.xml")) { return serializer.ReadObject(reader) as Game ?? throw new InvalidOperationException(); } } }