using CoreLibrary.Joueurs; using CoreLibrary.Persistance; using System.Runtime.InteropServices; namespace CoreLibrary.Manager { public class Manager : IDisposable { private bool estDetruit; private readonly IPersistance persistance; private readonly List joueurs; public IReadOnlyCollection Joueurs => joueurs.AsReadOnly(); private readonly List parties; public IReadOnlyCollection Parties => parties.AsReadOnly(); public Manager(IPersistance persistance) { this.persistance = persistance ?? throw new ArgumentNullException(nameof(persistance)); joueurs = this.persistance.ChargerJoueurs() ?? new List(); parties = this.persistance.ChargerParties() ?? new List(); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool detruire) { if (estDetruit) return; if (detruire) { persistance.EnregistrerJoueurs(joueurs); persistance.EnregistrerParties(parties); } estDetruit = true; } ~Manager() { Dispose(false); } } }