Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Sys / System / Configuration / DictionarySectionHandler.cs / 1 / 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.
//------------------------------------------------------------------------------
//
// 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
- PeerContact.cs
- OutputCacheModule.cs
- FixedSOMPage.cs
- FacetEnabledSchemaElement.cs
- ListViewPagedDataSource.cs
- DataKeyPropertyAttribute.cs
- LinearKeyFrames.cs
- WebHttpElement.cs
- arc.cs
- PropertyEmitterBase.cs
- TypeListConverter.cs
- XomlCompilerResults.cs
- DetailsViewRowCollection.cs
- LinqDataSourceValidationException.cs
- EventLogEntryCollection.cs
- WebBrowserUriTypeConverter.cs
- MatrixUtil.cs
- FragmentNavigationEventArgs.cs
- DataGridViewCell.cs
- AffineTransform3D.cs
- BuildProvidersCompiler.cs
- SBCSCodePageEncoding.cs
- EnumBuilder.cs
- SqlDataSource.cs
- EventlogProvider.cs
- COM2ICategorizePropertiesHandler.cs
- mediaeventshelper.cs
- DataControlPagerLinkButton.cs
- mediaeventargs.cs
- HMACSHA512.cs
- Zone.cs
- DetailsViewUpdateEventArgs.cs
- RenderDataDrawingContext.cs
- DataTrigger.cs
- RIPEMD160Managed.cs
- ResourceProperty.cs
- BaseTypeViewSchema.cs
- AdRotator.cs
- SafeBuffer.cs
- ExceptionRoutedEventArgs.cs
- TouchFrameEventArgs.cs
- XsltInput.cs
- _LoggingObject.cs
- ReaderWriterLock.cs
- FontWeights.cs
- XXXOnTypeBuilderInstantiation.cs
- RtfToXamlReader.cs
- Line.cs
- SubtreeProcessor.cs
- DataSet.cs
- ScriptingAuthenticationServiceSection.cs
- QueryContinueDragEvent.cs
- typedescriptorpermissionattribute.cs
- IERequestCache.cs
- GlyphTypeface.cs
- MediaContextNotificationWindow.cs
- ScriptManagerProxy.cs
- TypeExtension.cs
- DataGridViewTextBoxEditingControl.cs
- TextEditorDragDrop.cs
- XmlSchemaChoice.cs
- GenericsNotImplementedException.cs
- PeerObject.cs
- SchemaNotation.cs
- SqlUtil.cs
- PopupControlService.cs
- DataServiceRequest.cs
- BoolExpr.cs
- DropTarget.cs
- DataMemberFieldEditor.cs
- FlowThrottle.cs
- ButtonBaseAdapter.cs
- NameTable.cs
- AutoCompleteStringCollection.cs
- PaintEvent.cs
- CommonGetThemePartSize.cs
- DynamicValidatorEventArgs.cs
- ConfigurationManagerInternalFactory.cs
- HttpCookiesSection.cs
- OdbcPermission.cs
- ResXResourceSet.cs
- SuppressMessageAttribute.cs
- Brush.cs
- CellTreeSimplifier.cs
- ThreadExceptionDialog.cs
- RijndaelManaged.cs
- XPathAncestorIterator.cs
- DayRenderEvent.cs
- XmlNamespaceMapping.cs
- WeakKeyDictionary.cs
- ReachDocumentReferenceSerializerAsync.cs
- Label.cs
- FeatureAttribute.cs
- TypeDelegator.cs
- EntityDataSourceValidationException.cs
- XmlDocumentSerializer.cs
- FileEnumerator.cs
- StateManagedCollection.cs
- AppSettingsExpressionBuilder.cs
- DataObject.cs