ProfileGroupSettingsCollection.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / Configuration / ProfileGroupSettingsCollection.cs / 5 / 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")]
    [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] 
    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.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

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