using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; using System; using System.IO; namespace CtrEditor { internal class EstadoPersistente { // Ruta donde se guardará el estado private static readonly string _filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "estado.json"); // Instancia privada estática, parte del patrón Singleton private static EstadoPersistente _instance; // Propiedad privada para el directorio de trabajo private string _strDirectorioTrabajo; // Propiedad pública con get y set para controlar el acceso a _strDirectorioTrabajo public string DirectorioTrabajo { get { return _strDirectorioTrabajo; } set { _strDirectorioTrabajo = value; } } // Constructor privado para evitar la instanciación externa private EstadoPersistente() { _strDirectorioTrabajo = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); } // Propiedad pública estática para acceder a la instancia public static EstadoPersistente Instance { get { if (_instance == null) { _instance = CargarEstado(); } return _instance; } } // Método para guardar el estado en un archivo JSON public void GuardarEstado() { string json = JsonConvert.SerializeObject(this); File.WriteAllText(_filePath, json); } // Método estático para cargar el estado desde un archivo JSON private static EstadoPersistente CargarEstado() { if (File.Exists(_filePath)) { string json = File.ReadAllText(_filePath); return JsonConvert.DeserializeObject(json); } return new EstadoPersistente(); // Devuelve una nueva instancia si no existe el archivo } } }