예제 #1
0
            // 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();
                    }
                }
            }
예제 #2
0
        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);
                    }
                }
            }
        }