// Explicit static constructor to tell C# compiler // not to mark type as 'beforefieldinit'. static Properties() { instance = new ServiceSettings(); if (ServiceSettings.SettingsFileExists) { try { using (FileStream fs = new FileStream(SettingsFileName, FileMode.Open)) { var serializer = new XmlSerializer(typeof(ServiceSettings)); Properties.instance = (ServiceSettings)serializer.Deserialize(fs); } } catch (Exception e) { OnLoadSettingsFailed(e); RestoreDefaults(); } } }
private static void RestoreDefaults(ServiceSettings settings, bool force) { foreach (PropertyInfo pInfo in GetNonStaticProperties(typeof(ServiceSettings))) { if (force || !HasRestoreDefaultsIgnoreAttribute(pInfo)) { var defaultAttrib = pInfo.GetCustomAttributes(typeof(DefaultValueAttribute), false) .FirstOrDefault() as DefaultValueAttribute; if (defaultAttrib != null) { pInfo.SetValue(settings, defaultAttrib.Value, null); } } } }