1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
//------------------------------------------------------------------------------
// <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;
}
}
}
}
|