Esempio n. 1
0
            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());
            }