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();