protected override IEnumerable <Property> LoadProperties() { var properties = (from p in SettingsClassMetaDataReader.GetSettingsProperties(_settingsClass) select new { Property = p, Setting = CreateSettingsProperty(p) }) .ToList(); // retrieve the "shared" property values, which may differ from the values on an instance of the settings class! // We use the provider directly, because we are dealing in serialized values which cannot be obtained from the settings class. // Note that we assume that each property uses the settings class-level provider, and while this is a blatantly false // assumption in general (a property can have its own provider), it seems to hold true for settings as used within // the ClearCanvas codebase. var providerClass = SettingsClassMetaDataReader.GetSettingsProvider(_settingsClass); var provider = (ISharedApplicationSettingsProvider)GetProviderInstance(providerClass); var settingsPropertiesColl = properties.Select(p => p.Setting).ToSettingsPropertyCollection(); var values = provider.GetSharedPropertyValues(GetSettingsContext(), settingsPropertiesColl); return(from p in properties select CreateProperty(p.Property, p.Setting, values)); }
protected override void SaveProperties(IList <Property> properties) { var q = from p in properties where p.Dirty select new SettingsPropertyValue(CreateSettingsProperty(_settingsClass.GetProperty(p.Name))) { SerializedValue = p.Value, IsDirty = true }; // Save the "shared" property values, which may differ from the values on an instance of the settings class! // We use the provider directly, because we are dealing in serialized values which cannot be obtained from the settings class. // Note that we assume that each property uses the settings class-level provider, and while this is a blatantly false // assumption in general (a property can have its own provider), it seems to hold true for settings as used within // the ClearCanvas codebase. var providerClass = SettingsClassMetaDataReader.GetSettingsProvider(_settingsClass); var provider = (ISharedApplicationSettingsProvider)GetProviderInstance(providerClass); provider.SetSharedPropertyValues(GetSettingsContext(), q.ToSettingsPropertyValueCollection()); }