C# сериализует и десериализует значения конструктора класса с помощью JSON
Я пытаюсь сохранить обновленные значения(сохранить и перезагрузить) в текстовый файл
Когда пользователь закрывается, снова открывается, мы должны видеть, где он остановился.
1)В этом коде у меня есть кнопка, которая изменяет значения флага на true,
Но ... основной класс не видит измененные значения флага.
Тем не менее, старые значения записываются в txt-файл.
2) мой объект "f2" не используется, это нормально?
[JsonObject(MemberSerialization.OptIn)] class Class1 { public bool flag; public bool flag2; public Class1() { flag = false; flag2 = false; } }
[Serializable] [JsonObject(MemberSerialization.OptIn)] public partial class Form1 : Form { public Form1() { InitializeComponent(); } Class1 c1 = new Class1(); private void Button1_Click(object sender, EventArgs e) { c1.flag = true; c1.flag2 = true; Console.WriteLine("Flag changed: " + c1.flag); Console.WriteLine("Flag2 changed: " + c1.flag2); }
static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); Class1 c1 = new Class1(); Console.WriteLine("Flag changed: " + c1.flag); Console.WriteLine("Flag2 changed: " + c1.flag2); string json = JsonConvert.SerializeObject(c1); Console.WriteLine(json); File.WriteAllText("path.txt", json); string json2 = File.ReadAllText("path.txt"); Form1 f2 = JsonConvert.DeserializeObject<Form1>(json2); Console.WriteLine(json2); }
Что я уже пробовал:
[JsonObject(MemberSerialization.OptIn)] предлагается, но это не сработало
Dominic Burford
Каковы эти значения до того, как вы запишете их в файл? Являются ли они правильными или неправильными в этот момент?
Danny96
Как вы можете видеть в Class1, они установлены в false, когда я нажимаю кнопку, они установлены в true, но основная функция не видит изменений, записывает false в txt-файл.