static async Task Main(string[] args) { var setting = new SampleSettings().WithConfiguration(configuration => { configuration.SaveOnPropertyChanged = new SaveOnPropertyChanged { Type = SaveOnPropertyChanged.SaveType.Async }; configuration.JsonSerializerOptions = new JsonSerializerOptions { WriteIndented = true }; configuration.EncryptionOptions = new EncryptionOptions { EncryptionKey = "StrongEncryptionKey" }; }); // var setting = new SampleSettings(); #region Events setting.BeforeLoad += () => { Console.WriteLine("before load"); }; setting.BeforeEncrypt += () => { Console.WriteLine("before encrypt"); }; setting.BeforeDecrypt += () => { Console.WriteLine("before decrypt"); }; setting.BeforeSave += () => { Console.WriteLine("before save"); }; setting.AfterLoad += () => { Console.WriteLine("after load"); }; setting.AfterEncrypt += () => { Console.WriteLine("after encrypt"); }; setting.AfterDecrypt += () => { Console.WriteLine("after decrypt"); }; setting.AfterSave += () => { Console.WriteLine("after save"); }; #endregion // Load settings setting.Load(Path); //await setting.LoadAsync(Path); // Read settings var value = setting.SomeString; var complexValue = setting.SomeComplexObject; var list = setting.SomeComplexObjectList; //Change settings setting.SomeString = "Some other value"; setting.SomeComplexObject = new ComplexObject { SomeBool = false }; setting.SomeComplexObjectList = new List <ComplexObject> { new() { SomeBool = false } }; // Save settings setting.Save(); //await setting.SaveAsync(); } }