1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
public abstract class LibrarySettings : global::System.Configuration.ApplicationSettingsBase
{
protected LibrarySettings()
{
var properties = this.GetType().GetProperties().Where(y => y.GetCustomAttributes(typeof(UserScopedSettingAttribute), false).Length > 0).ToArray();
string assemblyName = Assembly.GetAssembly(this.GetType()).GetName().Name;
string configFileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
string.Concat(assemblyName, ".dll.config"));
var xdoc = XDocument.Load(configFileName);
var configSection = xdoc.XPathSelectElement(string.Format("configuration/userSettings/{0}.{1}", assemblyName, this.GetType().Name));
foreach (var setting in configSection.Elements("setting"))
{
var property = properties.Where(y => y.Name == setting.Attribute("name").Value).FirstOrDefault();
if (property != null)
property.SetValue(this, Convert.ChangeType(setting.Element("value").Value, property.PropertyType), null);
}
}
} |
Partager