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
- BinaryReader.cs
- HitTestFilterBehavior.cs
- UpdateEventArgs.cs
- MatrixUtil.cs
- RemoteWebConfigurationHostServer.cs
- Variant.cs
- DataKeyCollection.cs
- WindowsPen.cs
- ExceptionUtil.cs
- EventListenerClientSide.cs
- SectionVisual.cs
- TableParaClient.cs
- PageCatalogPart.cs
- ViewCellRelation.cs
- HttpModuleActionCollection.cs
- SchemaInfo.cs
- DashStyles.cs
- CachedFontFace.cs
- TreeNode.cs
- Subset.cs
- CalendarDesigner.cs
- BaseCollection.cs
- AppearanceEditorPart.cs
- RecognizerInfo.cs
- XamlVector3DCollectionSerializer.cs
- LineServices.cs
- DataGridTable.cs
- ChangePasswordAutoFormat.cs
- DetailsViewInsertedEventArgs.cs
- QueryIntervalOp.cs
- DelegatingTypeDescriptionProvider.cs
- VoiceInfo.cs
- CollaborationHelperFunctions.cs
- DataGridColumnHeader.cs
- NumericUpDownAccelerationCollection.cs
- DataContractSet.cs
- EnvironmentPermission.cs
- TypeConverterHelper.cs
- LayoutEditorPart.cs
- DynamicQueryableWrapper.cs
- MaxValueConverter.cs
- EventWaitHandle.cs
- SettingsPropertyIsReadOnlyException.cs
- BitmapEncoder.cs
- TogglePatternIdentifiers.cs
- SourceInterpreter.cs
- NumberSubstitution.cs
- Menu.cs
- SqlConnection.cs
- SoapParser.cs
- HttpCachePolicy.cs
- LambdaCompiler.Address.cs
- StylusPointProperty.cs
- SymDocumentType.cs
- UnsafeNativeMethodsMilCoreApi.cs
- OracleTransaction.cs
- QilSortKey.cs
- PrintPreviewControl.cs
- QueryInterceptorAttribute.cs
- ObjectParameter.cs
- ServiceOperation.cs
- LoadRetryStrategyFactory.cs
- InstanceData.cs
- PointUtil.cs
- SystemPens.cs
- DataGridViewCellMouseEventArgs.cs
- HuffmanTree.cs
- EdmValidator.cs
- EntityStoreSchemaGenerator.cs
- WaitHandle.cs
- ValidationService.cs
- autovalidator.cs
- LineMetrics.cs
- IntegerValidatorAttribute.cs
- DirectionalLight.cs
- MessageLoggingElement.cs
- TraceHandlerErrorFormatter.cs
- TriState.cs
- PreviewPrintController.cs
- httpapplicationstate.cs
- CmsInterop.cs
- SimpleApplicationHost.cs
- AlignmentXValidation.cs
- CounterCreationData.cs
- SqlMethodAttribute.cs
- InternalCache.cs
- ThreadPool.cs
- externdll.cs
- GlyphingCache.cs
- Util.cs
- StatusBarPanel.cs
- DESCryptoServiceProvider.cs
- ValuePatternIdentifiers.cs
- CommonObjectSecurity.cs
- DataGrid.cs
- ClientUIRequest.cs
- LogicalTreeHelper.cs
- DesignerActionUIService.cs
- BamlLocalizableResource.cs
- SelectionRangeConverter.cs