Юзаю обычный NewTonsoft Json.Net , в Config все объекты не статичны , и естественно сам Config не статичный , во время сериализации в cfg нет null объектов. Сам файл после вызыва метода: {} Код {} В чём проблема, я честно не ебу ;) Надеюсь на быструю помощь Пинганите CodeVir
Yotic, ну тк геты и сеты для сериализации нужны обязательно, насколько я помню. https://www.newtonsoft.com/json/help/html/SerializeObject.htm
Что-то типо такого набросал namespace SerializeYotic { using System; using System.Drawing; [Serializable] public class Config { public Point LocalNewDrop { get; set; } = new Point(0, 0); public Point LocalTimeDrop { get; set; } = new Point(20, 20); public Color ColorNewDrop { get; set; } = Color.Green; public Color ColorTimeDrop { get; set; } = Color.Gray; } } Код namespace SerializeYotic { using System; using System.Drawing; [Serializable] public class Config { public Point LocalNewDrop { get; set; } = new Point(0, 0); public Point LocalTimeDrop { get; set; } = new Point(20, 20); public Color ColorNewDrop { get; set; } = Color.Green; public Color ColorTimeDrop { get; set; } = Color.Gray; } } И используешь namespace SerializeYotic { using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using Newtonsoft.Json; public static class Program { [STAThread] public static void Main(string[] args) { var cfg = new Config(); var binFormat = new BinaryFormatter(); using (var fs = new FileStream("Config.cfg", FileMode.Create)) { var serializedContents = JsonConvert.SerializeObject(cfg); binFormat.Serialize(fs, serializedContents); } } } } Код namespace SerializeYotic { using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using Newtonsoft.Json; public static class Program { [STAThread] public static void Main(string[] args) { var cfg = new Config(); var binFormat = new BinaryFormatter(); using (var fs = new FileStream("Config.cfg", FileMode.Create)) { var serializedContents = JsonConvert.SerializeObject(cfg); binFormat.Serialize(fs, serializedContents); } } } } Или так: string JsFull = JsonConvert.SerializeObject(cfg, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include }); using (var fs = new StreamWriter("Config.cfg")) { fs.Write(JsFull); } Код string JsFull = JsonConvert.SerializeObject(cfg, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include }); using (var fs = new StreamWriter("Config.cfg")) { fs.Write(JsFull); }
Yotic, почему у тебя в коде .cfg а на скрине .txt формат? Смотри внимательнее где что делаешь... using внутри namespace полезен. Каждый дрочит как хочет. Если скидываешь код, то кидай кодом, а не скриншотами! FileCreate убери и добавь через FileStream. Вот результат что у меня выдало: Можешь так же добавить проверки на null Перед этим только добавить в конфиге типо public Point? localNewDrop { get; set; } = new Point(0, 0); // Point? Код public Point? localNewDrop { get; set; } = new Point(0, 0); // Point? Get/Set добавь так же как у меня выше https://disk.yandex.ru/d/vWkYZOWuDlO4ww