Example #1
0
        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();
        }
    }