Вы можете найти значение по умолчанию для свойства настройки по имени свойства следующим образом:
var value = (string)Properties.Settings.Default.Properties["propertyName"].DefaultValue;
Но возвращаемое значение является string
представлением значения свойства, например, если вы посмотрите на Settings.Designer.cs
, вы увидите, что свойство украшено атрибутом, в котором хранится значение по умолчанию [DefaultSettingValueAttribute("128, 128, 255")]
. В этом случае возвращаемое значение для вышеуказанного кода будет "128, 128, 225"
.
Чтобы получить значение по умолчанию в исходном типе свойства, я создал следующий метод расширения:
using System.ComponentModel;
using System.Configuration;
public static class SettingsExtensions
{
public static object GetDefaultValue(this ApplicationSettingsBase settings,
string propertyName)
{
var property = settings.Properties[propertyName];
var type = property.PropertyType;
var defaultValue = property.DefaultValue;
return TypeDescriptor.GetConverter(type).ConvertFrom(defaultValue);
}
}
Тогда как использование:
var myColor = (Color)Properties.Settings.Default.GetDefaultValue("myColor");