/// <summary>
		/// Updates this instance from the specified descriptor.
		/// </summary>
		/// <param name="descriptor"></param>
		public void UpdateFromDescriptor(SettingsPropertyDescriptor descriptor)
        {
            _name = descriptor.Name;
            _typeName = descriptor.TypeName;
            _scope = descriptor.Scope.ToString();
            _description = descriptor.Description;
            _defaultValue = descriptor.DefaultValue;
        }
            private Property CreateProperty(PropertyInfo property, SettingsProperty settingsProperty, SettingsPropertyValueCollection settingsPropertyValues)
            {
                var descriptor = new SettingsPropertyDescriptor(property);
                var settingsPropertyValue = settingsPropertyValues[settingsProperty.Name];
                var defaultValue = settingsProperty.DefaultValue;
                var serializedValue = settingsPropertyValue == null ? null : settingsPropertyValue.SerializedValue;

                return new Property(descriptor, (serializedValue ?? defaultValue).ToString());
            }
		/// <summary>
		/// Returns a list of <see cref="SettingsPropertyDescriptor"/> objects describing each property belonging
		/// to a settings group.
		/// </summary>
		public static List<SettingsPropertyDescriptor> ListSettingsProperties(SettingsGroupDescriptor group)
        {
            Type settingsClass = Type.GetType(group.AssemblyQualifiedTypeName);

            return CollectionUtils.Map<PropertyInfo, SettingsPropertyDescriptor, List<SettingsPropertyDescriptor>>(
                SettingsClassMetaDataReader.GetSettingsProperties(settingsClass),
                delegate(PropertyInfo p)
                {
                    SettingsPropertyDescriptor info = new SettingsPropertyDescriptor(
                        SettingsClassMetaDataReader.GetName(p),
                        SettingsClassMetaDataReader.GetType(p).FullName,
                        SettingsClassMetaDataReader.GetDescription(p),
                        SettingsClassMetaDataReader.GetScope(p),
                        SettingsClassMetaDataReader.GetDefaultValue(p));
                    return info;
                });
        }
        /// <summary>
        /// Returns a list of <see cref="SettingsPropertyDescriptor"/> objects describing each property belonging
        /// to a settings group.
        /// </summary>
        public static List <SettingsPropertyDescriptor> ListSettingsProperties(SettingsGroupDescriptor group)
        {
            Type settingsClass = Type.GetType(group.AssemblyQualifiedTypeName);

            return(CollectionUtils.Map <PropertyInfo, SettingsPropertyDescriptor, List <SettingsPropertyDescriptor> >(
                       SettingsClassMetaDataReader.GetSettingsProperties(settingsClass),
                       delegate(PropertyInfo p)
            {
                SettingsPropertyDescriptor info = new SettingsPropertyDescriptor(
                    SettingsClassMetaDataReader.GetName(p),
                    SettingsClassMetaDataReader.GetType(p).FullName,
                    SettingsClassMetaDataReader.GetDescription(p),
                    SettingsClassMetaDataReader.GetScope(p),
                    SettingsClassMetaDataReader.GetDefaultValue(p));
                return info;
            }));
        }