CtrEditor/estadoPersistente.cs

69 lines
2.1 KiB
C#

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<EstadoPersistente>(json);
}
return new EstadoPersistente(); // Devuelve una nueva instancia si no existe el archivo
}
}
}