I needed a simple C# class for saving writable application settings. The first attempt was to use Project -> Properties -> Settings, but only user scoped settings are writable. Here’s a simple solution: you will need to add Newtonsoft’s Json.NET (Nuget Json.Net) to your project, if you are not already using it.
using System.IO; using Newtonsoft.Json; ... public class AppSettingsBase<T> where T : new () { private const string DefaultSettingsFilename = "settings.json" ; public void Save( string fileName = DefaultSettingsFilename) { File.WriteAllText(fileName, JsonConvert.SerializeObject( this )); } public static void Save(T settings, string fileName = DefaultSettingsFilename) { File.WriteAllText(fileName, JsonConvert.SerializeObject(settings)); } public static T Load( string fileName = DefaultSettingsFilename) { return (File.Exists(fileName)) ? JsonConvert.DeserializeObject<T>(File.ReadAllText(fileName)) : new T(); } } |
Add your application defined settings to your settings class (derived from the base template):
public class AppSettings : AppSettingsBase<AppSettings> { public Guid ClientId = Guid.Empty; public List< string > ServerList = new List< string >(); public List< string > DatabasesToExclude = new List< string >(); public bool IsAutoUpdate = true ; public int AutoUpdaterCheckIntervalHours = 6; public DateTime LastUpdateCheckTime = DateTime.MinValue; ... } |
Using your settings is simple:
AppSettings settings = AppSettings.Load(); settings.LastUpdateCheckTime = DateTime.UtcNow; settings.Save(); |