File: Configuration\ProfileGroupSettings.cs
Project: ndp\fx\src\xsp\system\Web\System.Web.csproj (System.Web)
//------------------------------------------------------------------------------
// <copyright file="ProfileGroupSettings.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//------------------------------------------------------------------------------
 
namespace System.Web.Configuration {
    using System;
    using System.Xml;
    using System.Configuration;
    using System.Collections.Specialized;
    using System.Collections;
    using System.IO;
    using System.Text;
    using System.Web.Util;
    using System.Security.Permissions;
 
    public sealed class ProfileGroupSettings : ConfigurationElement {
        private static ConfigurationPropertyCollection _properties;
        private static readonly ConfigurationProperty _propName =
            new ConfigurationProperty("name",
                                        typeof(string),
                                        null,
                                        null,
                                        ProfilePropertyNameValidator.SingletonInstance,
                                        ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey);
        private static readonly ConfigurationProperty _propProperties =
            new ConfigurationProperty(null, 
                                        typeof(ProfilePropertySettingsCollection), 
                                        null, 
                                        ConfigurationPropertyOptions.IsDefaultCollection);
 
        static ProfileGroupSettings() {
            // Property initialization
            _properties = new ConfigurationPropertyCollection();
            _properties.Add(_propName);
            _properties.Add(_propProperties);
        }
 
        internal void InternalDeserialize(XmlReader reader, bool serializeCollectionKey) {
            DeserializeElement(reader, serializeCollectionKey);
        }
 
        internal ProfileGroupSettings() {
        }
 
        public ProfileGroupSettings(string name) {
            base[_propName] = name;
        }
 
        public override bool Equals(object obj) {
            ProfileGroupSettings o = obj as ProfileGroupSettings;
            return (o != null && Name == o.Name && Object.Equals(PropertySettings, o.PropertySettings));
        }
 
        public override int GetHashCode() {
            return Name.GetHashCode() ^ PropertySettings.GetHashCode();
        }
 
        protected override ConfigurationPropertyCollection Properties {
            get {
                return _properties;
            }
        }
 
        [ConfigurationProperty("name", IsRequired = true, IsKey = true)]
        public string Name {
            get {
                return (string)base[_propName];
            }
        }
 
        [ConfigurationProperty("", IsDefaultCollection = true)]
        public ProfilePropertySettingsCollection PropertySettings {
            get {
                return (ProfilePropertySettingsCollection)base[_propProperties];
            }
        }
 
        internal void InternalReset(ProfileGroupSettings parentSettings) {
            base.Reset(parentSettings);
        }
 
        internal void InternalUnmerge(ConfigurationElement sourceElement, ConfigurationElement parentElement,
                                ConfigurationSaveMode saveMode) {
            base.Unmerge(sourceElement, parentElement, saveMode); // Base merge to get locks merged
        }
 
    } // class ProfileGroupSettings
}