public string this[string settingName] { get { lock (_settingLock) { ServerSettingsData settings = null; try { var text = _fileWrapper.ReadAllText(Config.Server.SettingsPath); settings = JsonConvert.DeserializeObject <ServerSettingsData>(text); } catch { settings = new ServerSettingsData(); } var prop = typeof(ServerSettingsData).GetProperty(settingName); return(prop.GetValue(settings)?.ToString()); } } set { lock (_settingLock) { var settings = Config.Server.Get(); var prop = typeof(ServerSettingsData).GetProperty(settingName); prop.SetValue(settings, value); settings.Save(); } } }