Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Sys / System / Configuration / DictionarySectionHandler.cs / 1305376 / DictionarySectionHandler.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Configuration {
using System.Collections;
using System.Collections.Specialized;
using System.Xml;
using System.Globalization;
///
/// Simple dictionary config factory
/// config is a dictionary mapping key->value
///
/// <add key="name" value="text"> sets key=text
/// <remove key="name"> removes the definition of key
/// <clear> removes all definitions
///
///
public class DictionarySectionHandler : IConfigurationSectionHandler {
///
/// Given a partially composed config object (possibly null)
/// and some input from the config system, return a
/// further partially composed config object
///
public virtual object Create(Object parent, Object context, XmlNode section) {
Hashtable res;
// start res off as a shallow clone of the parent
if (parent == null)
res = new Hashtable(StringComparer.OrdinalIgnoreCase);
else
res = (Hashtable)((Hashtable)parent).Clone();
// process XML
HandlerBase.CheckForUnrecognizedAttributes(section);
foreach (XmlNode child in section.ChildNodes) {
// skip whitespace and comments, throws if non-element
if (HandlerBase.IsIgnorableAlsoCheckForNonElement(child))
continue;
// handle , , tags
if (child.Name == "add") {
HandlerBase.CheckForChildNodes(child);
String key = HandlerBase.RemoveRequiredAttribute(child, KeyAttributeName);
String value;
if (ValueRequired)
value = HandlerBase.RemoveRequiredAttribute(child, ValueAttributeName);
else
value = HandlerBase.RemoveAttribute(child, ValueAttributeName);
HandlerBase.CheckForUnrecognizedAttributes(child);
if (value == null)
value = "";
res[key] = value;
}
else if (child.Name == "remove") {
HandlerBase.CheckForChildNodes(child);
String key = HandlerBase.RemoveRequiredAttribute(child, KeyAttributeName);
HandlerBase.CheckForUnrecognizedAttributes(child);
res.Remove(key);
}
else if (child.Name.Equals("clear")) {
HandlerBase.CheckForChildNodes(child);
HandlerBase.CheckForUnrecognizedAttributes(child);
res.Clear();
}
else {
HandlerBase.ThrowUnrecognizedElement(child);
}
}
return res;
}
///
/// Make the name of the key attribute configurable by derived classes.
///
protected virtual string KeyAttributeName {
get { return "key";}
}
///
/// Make the name of the value attribute configurable by derived classes.
///
protected virtual string ValueAttributeName {
get { return "value";}
}
//
internal virtual bool ValueRequired {
get { return false; }
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CachedPathData.cs
- StringBuilder.cs
- XdrBuilder.cs
- OdbcEnvironmentHandle.cs
- DateTimeEditor.cs
- DataGridColumnReorderingEventArgs.cs
- PageSettings.cs
- IPGlobalProperties.cs
- JoinSymbol.cs
- CssClassPropertyAttribute.cs
- precedingsibling.cs
- StringUtil.cs
- DebugView.cs
- DbDataReader.cs
- DataGridBoundColumn.cs
- SQLBinaryStorage.cs
- MobileControlDesigner.cs
- InputDevice.cs
- XmlBinaryReader.cs
- HashAlgorithm.cs
- TabPanel.cs
- CompoundFileReference.cs
- ConnectionInterfaceCollection.cs
- StyleTypedPropertyAttribute.cs
- RowTypePropertyElement.cs
- EnterpriseServicesHelper.cs
- TracedNativeMethods.cs
- TextEditorSelection.cs
- DataControlFieldCollection.cs
- Canonicalizers.cs
- PowerModeChangedEventArgs.cs
- EventLogPermission.cs
- HttpStreamXmlDictionaryReader.cs
- TabPage.cs
- IdentityModelStringsVersion1.cs
- Vector3DAnimationUsingKeyFrames.cs
- TextPatternIdentifiers.cs
- SqlTransaction.cs
- ReferenceEqualityComparer.cs
- RenamedEventArgs.cs
- XmlBoundElement.cs
- DataViewSetting.cs
- DNS.cs
- PtsHost.cs
- MarkupCompilePass2.cs
- PageParser.cs
- TransactionManager.cs
- ViewStateModeByIdAttribute.cs
- UITypeEditor.cs
- DataGridViewComboBoxEditingControl.cs
- DispatcherSynchronizationContext.cs
- IApplicationTrustManager.cs
- EntryIndex.cs
- ObjectDataSourceStatusEventArgs.cs
- oledbmetadatacollectionnames.cs
- CompiledRegexRunner.cs
- XmlILConstructAnalyzer.cs
- SettingsProviderCollection.cs
- TrackBarRenderer.cs
- ConfigXmlText.cs
- PolicyDesigner.cs
- SendMailErrorEventArgs.cs
- GACIdentityPermission.cs
- CqlIdentifiers.cs
- ResXResourceSet.cs
- MetadataSource.cs
- LinkedResource.cs
- DynamicUpdateCommand.cs
- XmlNodeWriter.cs
- PageAsyncTask.cs
- InkSerializer.cs
- TreeNodeStyleCollection.cs
- PlanCompiler.cs
- ClientOptions.cs
- BindUriHelper.cs
- SqlRetyper.cs
- RectangleGeometry.cs
- RepeatButton.cs
- GenericTransactionFlowAttribute.cs
- TreeNodeBinding.cs
- TableAdapterManagerHelper.cs
- XmlSchemaComplexType.cs
- cookie.cs
- CustomAttribute.cs
- FontFamilyValueSerializer.cs
- AuditLog.cs
- ColorBlend.cs
- TextContainerHelper.cs
- LogFlushAsyncResult.cs
- SqlHelper.cs
- DetailsViewDeletedEventArgs.cs
- DbSetClause.cs
- SqlStream.cs
- Vector3DIndependentAnimationStorage.cs
- SqlNode.cs
- ADMembershipProvider.cs
- DoubleLinkListEnumerator.cs
- FlowNode.cs
- WebPartConnectionCollection.cs
- SharedRuntimeState.cs