Introducing SimpleSamSettings - CodeProject
Introducing SimpleSamSettings - CodeProject
Introducing SimpleSamSettings
outbred, 17 Oct 2018
Introduction
SimpleSamSettings is a framework based on the idea that many distinct settings classes are better than one huge one.
Persistence is configurable (Save after every change? Turn off persistence for in memory only?), as is the location.
Every application requires user-, application-, and other defined settings. The maintenance of these settings can be horrendous
over time if not property architectured and maintained.
SimpleSamSettings aims to ease the burden of creating, managing, saving, and restoring settings for any application in
.NET Standard.
Background
This architecture has been in my production code for many years now, and I've recently re-written it for the open source
community. Tried and true, hopefully it can handle anything you throw at it!
Globals.SettingsFileBasePath = Path.Combine(Environment.GetFolderPath
(Environment.SpecialFolder.ApplicationData), "MyAppName");
That's it! Your settings will be persisted to %appdata%/MyAppName/MySettings.settings in JSON format. Prefer binary? No
problem! Put the [Serializable] tag on it and it will auto-serialize as binary.
By default, each change updates the file on disk. To turn off this behavior, simply set AutoSave to false, like this:
https://www.codeproject.com/Articles/1263458/Introducing-SimpleSamSettings?display=Print 1/3
30/11/2018 Introducing SimpleSamSettings - CodeProject
...then at any time, you can save it (say, on application exit):
settings.MakeUndoable = true;
settings.RevertChanges();
settings.MakeUndoable = false;
Usage Advice
Encapsulate your settings into small classes - many, properly encapsulated classes is preferred over one or a few very large
ones! This makes it easier to maintain, easier to use and reuse, and speeds up disk I/O.
NOTE
If a collection or object inside the settings class changes, the file will not be autosaved. It is recommended that the settings class
listens for changes on those objects and auto-saves them, as appropriate, but this is in no way enforced and left entirely up to the
consumer (you). Happy settings coding!
History
15th October, 2018: Initial public release
License
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)
https://www.codeproject.com/Articles/1263458/Introducing-SimpleSamSettings?display=Print 2/3
30/11/2018 Introducing SimpleSamSettings - CodeProject
outbred
Software Developer (Senior)
United States
Senior Software Developer/Lead/Architect for all things .NET/C#. Passionate about the SDLC and architecture.
Permalink | Advertise | Privacy | Cookies | Terms of Use | Mobile Article Copyright 2018 by outbred
Web03 | 2.8.181129.1 | Last Updated 17 Oct 2018 Everything else Copyright © CodeProject, 1999-2018
https://www.codeproject.com/Articles/1263458/Introducing-SimpleSamSettings?display=Print 3/3