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
- PasswordBox.cs
- SHA1.cs
- AsymmetricSignatureDeformatter.cs
- ObjectDataSourceEventArgs.cs
- CapabilitiesState.cs
- ResourceReferenceKeyNotFoundException.cs
- XmlChoiceIdentifierAttribute.cs
- FormatterConverter.cs
- WebEncodingValidatorAttribute.cs
- TextDecorationCollectionConverter.cs
- QuaternionConverter.cs
- StringCollection.cs
- Sql8ConformanceChecker.cs
- InlineUIContainer.cs
- RadioButtonList.cs
- XmlWriterTraceListener.cs
- securitymgrsite.cs
- BindingSourceDesigner.cs
- RelationshipEnd.cs
- FileLogRecordEnumerator.cs
- ImpersonateTokenRef.cs
- WorkflowMarkupSerializer.cs
- PopupEventArgs.cs
- WebPartPersonalization.cs
- XmlAutoDetectWriter.cs
- WarningException.cs
- X509CertificateTrustedIssuerElementCollection.cs
- EntityConnectionStringBuilder.cs
- AppDomainManager.cs
- HttpCookiesSection.cs
- StackOverflowException.cs
- OleDbPermission.cs
- BooleanExpr.cs
- SharedPersonalizationStateInfo.cs
- OutputScopeManager.cs
- LineInfo.cs
- OverflowException.cs
- ProcessModule.cs
- ReferenceEqualityComparer.cs
- TextTreeRootNode.cs
- RequestSecurityTokenForRemoteTokenFactory.cs
- DataGridViewCheckBoxCell.cs
- BuilderPropertyEntry.cs
- ContainerSelectorGlyph.cs
- ArraySortHelper.cs
- SkewTransform.cs
- BoolExpr.cs
- BoolExpressionVisitors.cs
- Columns.cs
- MenuItemStyle.cs
- ConfigurationManagerInternalFactory.cs
- EntityDataSourceContainerNameItem.cs
- CompilerError.cs
- Label.cs
- DataGridViewComboBoxEditingControl.cs
- XmlArrayItemAttribute.cs
- WindowsRegion.cs
- ToolZoneDesigner.cs
- EventItfInfo.cs
- QuaternionConverter.cs
- CroppedBitmap.cs
- TextEmbeddedObject.cs
- ConfigurationValue.cs
- NativeMethodsOther.cs
- DirectoryInfo.cs
- ProvidePropertyAttribute.cs
- RowTypePropertyElement.cs
- ComplexTypeEmitter.cs
- CollectionBase.cs
- XsltLoader.cs
- CustomBindingElementCollection.cs
- Membership.cs
- SimpleHandlerBuildProvider.cs
- SqlRecordBuffer.cs
- WebScriptMetadataFormatter.cs
- ValuePattern.cs
- SpoolingTask.cs
- SystemParameters.cs
- WhitespaceRuleLookup.cs
- DataTableMappingCollection.cs
- RenderingBiasValidation.cs
- DataControlCommands.cs
- ObjectPersistData.cs
- RedirectionProxy.cs
- BaseTemplateBuildProvider.cs
- XmlElementAttributes.cs
- ReflectionServiceProvider.cs
- RadioButton.cs
- InternalPermissions.cs
- _SafeNetHandles.cs
- LinkUtilities.cs
- ResourceContainer.cs
- NumberFunctions.cs
- FixedSOMGroup.cs
- BinaryFormatterWriter.cs
- LowerCaseStringConverter.cs
- ColorTransformHelper.cs
- ButtonStandardAdapter.cs
- UnsafeNativeMethods.cs
- XmlSchemaAttributeGroup.cs