141 lines
5.2 KiB
C#
141 lines
5.2 KiB
C#
|
//------------------------------------------------------------------------------
|
||
|
// <copyright file="RootProfilePropertySettingsCollection.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;
|
||
|
|
||
|
// class ProfileSection
|
||
|
|
||
|
// ProfileGroupSettingsCollection
|
||
|
|
||
|
[ConfigurationCollection(typeof(ProfilePropertySettings))]
|
||
|
public sealed class RootProfilePropertySettingsCollection : ProfilePropertySettingsCollection {
|
||
|
private ProfileGroupSettingsCollection _propGroups = new ProfileGroupSettingsCollection();
|
||
|
private static ConfigurationPropertyCollection _properties;
|
||
|
|
||
|
static RootProfilePropertySettingsCollection() {
|
||
|
// Property initialization
|
||
|
_properties = new ConfigurationPropertyCollection();
|
||
|
}
|
||
|
|
||
|
protected override ConfigurationPropertyCollection Properties {
|
||
|
get {
|
||
|
return _properties;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public RootProfilePropertySettingsCollection() {
|
||
|
}
|
||
|
|
||
|
protected override bool AllowClear {
|
||
|
get {
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected override bool ThrowOnDuplicate {
|
||
|
get {
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected override bool OnDeserializeUnrecognizedElement(String elementName, XmlReader reader) {
|
||
|
bool handled = false;
|
||
|
|
||
|
// Deal with the "group" element
|
||
|
if (elementName == "group") {
|
||
|
ProfileGroupSettingsCollection groupCollection;
|
||
|
ProfileGroupSettings newGroupSettings;
|
||
|
ProfileGroupSettings curGroupSettings = null;
|
||
|
string name = reader.GetAttribute("name");
|
||
|
|
||
|
groupCollection = GroupSettings;
|
||
|
|
||
|
if (name != null) {
|
||
|
curGroupSettings = groupCollection[name];
|
||
|
}
|
||
|
|
||
|
newGroupSettings = new ProfileGroupSettings();
|
||
|
newGroupSettings.InternalReset(curGroupSettings);
|
||
|
newGroupSettings.InternalDeserialize(reader, false);
|
||
|
|
||
|
groupCollection.AddOrReplace(newGroupSettings);
|
||
|
|
||
|
handled = true;
|
||
|
}
|
||
|
else {
|
||
|
if (elementName == "clear") {
|
||
|
GroupSettings.Clear();
|
||
|
}
|
||
|
|
||
|
// Let the base class deal with "add, remove, clear"
|
||
|
handled = base.OnDeserializeUnrecognizedElement(elementName, reader);
|
||
|
}
|
||
|
|
||
|
return handled;
|
||
|
}
|
||
|
|
||
|
protected override bool IsModified() {
|
||
|
return base.IsModified() || GroupSettings.InternalIsModified();
|
||
|
}
|
||
|
|
||
|
protected override void ResetModified() {
|
||
|
base.ResetModified();
|
||
|
GroupSettings.InternalResetModified();
|
||
|
}
|
||
|
|
||
|
public override bool Equals(object rootProfilePropertySettingsCollection) {
|
||
|
RootProfilePropertySettingsCollection o = rootProfilePropertySettingsCollection as RootProfilePropertySettingsCollection;
|
||
|
return (o != null && Object.Equals(this, o) && Object.Equals(GroupSettings, o.GroupSettings));
|
||
|
}
|
||
|
|
||
|
public override int GetHashCode() {
|
||
|
return HashCodeCombiner.CombineHashCodes(base.GetHashCode(), GroupSettings.GetHashCode());
|
||
|
}
|
||
|
|
||
|
protected override void Reset(ConfigurationElement parentElement) {
|
||
|
RootProfilePropertySettingsCollection parent = parentElement as RootProfilePropertySettingsCollection;
|
||
|
base.Reset(parentElement);
|
||
|
GroupSettings.InternalReset(parent.GroupSettings);
|
||
|
}
|
||
|
|
||
|
protected override void Unmerge(ConfigurationElement sourceElement,
|
||
|
ConfigurationElement parentElement,
|
||
|
ConfigurationSaveMode saveMode) {
|
||
|
RootProfilePropertySettingsCollection parent = parentElement as RootProfilePropertySettingsCollection;
|
||
|
RootProfilePropertySettingsCollection source = sourceElement as RootProfilePropertySettingsCollection;
|
||
|
|
||
|
base.Unmerge(sourceElement, parentElement, saveMode);
|
||
|
GroupSettings.InternalUnMerge(source.GroupSettings, (parent != null) ? parent.GroupSettings : null, saveMode);
|
||
|
}
|
||
|
|
||
|
protected override bool SerializeElement(XmlWriter writer, bool serializeCollectionKey) {
|
||
|
bool DataToWrite = false;
|
||
|
if (base.SerializeElement(null, false) == true ||
|
||
|
GroupSettings.InternalSerialize(null, false) == true) {
|
||
|
DataToWrite |= base.SerializeElement(writer, false);
|
||
|
DataToWrite |= GroupSettings.InternalSerialize(writer, false);
|
||
|
}
|
||
|
return DataToWrite;
|
||
|
}
|
||
|
|
||
|
[ConfigurationProperty("group")]
|
||
|
public ProfileGroupSettingsCollection GroupSettings {
|
||
|
get {
|
||
|
return _propGroups;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|