using CoreLibrary.Joueurs; using System.Runtime.Serialization.Json; using System.Text; using System.Xml; namespace CoreLibrary.Persistance { public class PersistanceJSON : IPersistance { public T[] Charger() { string fichier = $"{typeof(T).Name}.json"; string ancienDossier = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(Path.Combine(ancienDossier, "../../../../")); Console.WriteLine(Directory.GetCurrentDirectory()); if(!Directory.Exists("Fichiers")) { Directory.SetCurrentDirectory(ancienDossier); return []; } else { Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), "Fichiers")); } if (!File.Exists(fichier)) { Directory.SetCurrentDirectory(ancienDossier); return []; } ; DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(IEnumerable)); T[] elements; using (FileStream s = File.OpenRead(fichier)) { elements = jsonSerializer.ReadObject(s) as T[]; } Directory.SetCurrentDirectory(ancienDossier); return elements; } public void Enregistrer(T[] elements) { string fichier = $"{typeof(T).Name}.json"; string ancienDossier = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(Path.Combine(ancienDossier, "../../../../")); if (!Directory.Exists("Fichiers")) { Directory.CreateDirectory("Fichiers"); } Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), "Fichiers")); DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(IEnumerable)); using(FileStream s = File.Create(fichier)) { using(XmlDictionaryWriter writer = JsonReaderWriterFactory.CreateJsonWriter( s, Encoding.UTF8, false, true)) { jsonSerializer.WriteObject(writer, elements); } } Directory.SetCurrentDirectory(ancienDossier); } } }