ProfileGroupSettingsCollection.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Configuration / ProfileGroupSettingsCollection.cs / 1305376 / ProfileGroupSettingsCollection.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

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; 
 
    [ConfigurationCollection(typeof(ProfileGroupSettings), AddItemName = "group")]
    public sealed class ProfileGroupSettingsCollection : ConfigurationElementCollection { 
        private static ConfigurationPropertyCollection _properties;
        private bool bModified = false;

        static ProfileGroupSettingsCollection() { 
            _properties = new ConfigurationPropertyCollection();
        } 
 
        public ProfileGroupSettingsCollection() {
            AddElementName = "group"; 
            ClearElementName = String.Empty; // This collection does not support Clear tags
            EmitClear = false;
        }
 
        protected override ConfigurationPropertyCollection Properties {
            get { 
                return _properties; 
            }
        } 

        // public properties
        public String[] AllKeys {
            get { 
                return StringUtil.ObjectArrayToStringArray(BaseGetAllKeys());
            } 
        } 

        public new ProfileGroupSettings this[string name] { 
            get {
                return (ProfileGroupSettings)BaseGet(name);
            }
        } 

        public ProfileGroupSettings this[int index] { 
            get { 
                return (ProfileGroupSettings)BaseGet(index);
            } 
            set {
                if (BaseGet(index) != null) {
                    BaseRemoveAt(index);
                } 
                BaseAdd(index, value);
            } 
        } 

        internal void AddOrReplace(ProfileGroupSettings groupSettings) { 
            BaseAdd(groupSettings, false);
        }

        // Protected Overrides 
        protected override ConfigurationElement CreateNewElement() {
            return new ProfileGroupSettings(); 
        } 

        protected override Object GetElementKey(ConfigurationElement element) { 
            return ((ProfileGroupSettings)element).Name;
        }

        // Internal access to ConfigurationElement methods 
        internal bool InternalIsModified() {
            return IsModified(); 
        } 

        internal void InternalResetModified() { 
            ResetModified();
        }

        internal void InternalReset(ConfigurationElement parentElement) { 
            Reset(parentElement);
        } 
 
        internal void InternalUnMerge(ConfigurationElement sourceElement, ConfigurationElement parentElement,
                                      ConfigurationSaveMode saveMode) { 
            // This requires a special unmerge because it should not act like an element in a collection
            // which is the default behavior
            Unmerge(sourceElement, parentElement, saveMode); // Base merge to get locks merged
            BaseClear(); // don't use the merged data however 

            ProfileGroupSettingsCollection source = sourceElement as ProfileGroupSettingsCollection; 
            ProfileGroupSettingsCollection parent = parentElement as ProfileGroupSettingsCollection; 

            // foreach group in the source we should unmerge the individual settings. 
            foreach (ProfileGroupSettings settings in source) {
                ProfileGroupSettings settingsFromParent = parent.Get(settings.Name);
                ProfileGroupSettings deltaSettings = new ProfileGroupSettings();
 
                deltaSettings.InternalUnmerge(settings, settingsFromParent, saveMode);
                BaseAdd(deltaSettings); 
            } 

        } 

        internal bool InternalSerialize(XmlWriter writer, bool serializeCollectionKey) {
            if (EmitClear == true) {
                throw new ConfigurationErrorsException(SR.GetString(SR.Clear_not_valid)); 
            }
 
            return SerializeElement(writer, serializeCollectionKey); 
        }
 
        // public methods
        public void Add(ProfileGroupSettings group) {
            BaseAdd(group);
        } 

        public ProfileGroupSettings Get(int index) { 
            return (ProfileGroupSettings)BaseGet(index); 
        }
 
        public ProfileGroupSettings Get(string name) {
            return (ProfileGroupSettings)BaseGet(name);
        }
 
        public String GetKey(int index) {
            return (String) BaseGetKey(index); 
        } 

        public void Set(ProfileGroupSettings group) { 
            BaseAdd(group, false);
        }

        public int IndexOf(ProfileGroupSettings group) { 
            return BaseIndexOf(group);
        } 
 
        public void Remove(string name) {
            ConfigurationElement elem = BaseGet(name); 
            if (elem != null) {
                ElementInformation elemInfo = elem.ElementInformation;
                if (elemInfo.IsPresent) {
                    BaseRemove(name); 
                }
                else { 
                    throw new ConfigurationErrorsException(SR.GetString(SR.Config_base_cannot_remove_inherited_items)); 
                }
            } 
        }

        public void RemoveAt(int index) {
            ConfigurationElement elem = BaseGet(index); 
            if (elem != null) {
                ElementInformation elemInfo = elem.ElementInformation; 
                if (elemInfo.IsPresent) { 
                    BaseRemoveAt(index);
                } 
                else {
                    throw new ConfigurationErrorsException(SR.GetString(SR.Config_base_cannot_remove_inherited_items));
                }
            } 
        }
 
        public void Clear() { 
            int index = Count-1;
            bModified = true; 

            for (int i = index; i >= 0; i--) {
                ConfigurationElement elem = BaseGet(i);
                if (elem != null) { 
                    ElementInformation elemInfo = elem.ElementInformation;
                    if (elemInfo.IsPresent) { 
                        BaseRemoveAt(i); 
                    }
                } 
            }
        }

        protected override void ResetModified() { 
            bModified = false;
            base.ResetModified(); 
        } 

        protected override bool IsModified() { 
            if (bModified == true) {
                return true;
            }
            return base.IsModified(); 
        }
 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK