protected internal override void Reset(ConfigurationElement parentElement) {
ConfigurationElementCollection parentCollection = parentElement as ConfigurationElementCollection;
ResetLockLists(parentElement);
if (parentCollection != null) {
foreach (Entry entry in parentCollection.Items) {
ConfigurationElement elem = CallCreateNewElement(entry.GetKey(this).ToString());
elem.Reset(entry._value);
if ((CollectionType == ConfigurationElementCollectionType.AddRemoveClearMap ||
CollectionType == ConfigurationElementCollectionType.AddRemoveClearMapAlternate) &&
(entry._entryType == EntryType.Added ||
entry._entryType == EntryType.Replaced)) { // do not add removed items from the parent
BaseAdd(elem, true, true); // This version combines dups and throws (unless overridden)
}
else {
if (CollectionType == ConfigurationElementCollectionType.BasicMap ||
CollectionType == ConfigurationElementCollectionType.BasicMapAlternate) {
BaseAdd(-1, elem, true); // this version appends regardless of if it is a dup.
}
}
}
_inheritedCount = Count; // After reset the count is the number of items actually inherited.
}
}