Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- NameValueSectionHandler.cs
- InheritanceContextHelper.cs
- TypeGeneratedEventArgs.cs
- Visual3D.cs
- ColorBuilder.cs
- CacheManager.cs
- PointAnimationBase.cs
- BindingManagerDataErrorEventArgs.cs
- Invariant.cs
- XPathBuilder.cs
- ProfileParameter.cs
- SamlAuthenticationStatement.cs
- MimeXmlReflector.cs
- ServiceModelSectionGroup.cs
- NullableLongMinMaxAggregationOperator.cs
- InputBindingCollection.cs
- PaintEvent.cs
- ContentFilePart.cs
- CodeMethodReturnStatement.cs
- ScriptManagerProxy.cs
- TrackingProfileDeserializationException.cs
- WebPartManagerInternals.cs
- ObjectKeyFrameCollection.cs
- StyleBamlRecordReader.cs
- HashAlgorithm.cs
- GroupLabel.cs
- XmlSchemaInferenceException.cs
- ColorAnimationUsingKeyFrames.cs
- UDPClient.cs
- WebBrowser.cs
- AudioBase.cs
- HttpPostedFile.cs
- UntrustedRecipientException.cs
- NavigationWindowAutomationPeer.cs
- HttpConfigurationContext.cs
- SslStreamSecurityUpgradeProvider.cs
- IsolatedStorageFilePermission.cs
- XPathNodeIterator.cs
- SecurityContextSecurityTokenParameters.cs
- remotingproxy.cs
- ProfileModule.cs
- ExtenderHelpers.cs
- UnknownBitmapDecoder.cs
- OverflowException.cs
- WhitespaceRuleLookup.cs
- WS2007HttpBindingElement.cs
- SchemaAttDef.cs
- mactripleDES.cs
- OdbcErrorCollection.cs
- ExtensionFile.cs
- MetadataReference.cs
- ServiceDurableInstance.cs
- RowUpdatingEventArgs.cs
- PrintController.cs
- VectorConverter.cs
- SharedUtils.cs
- SchemaNames.cs
- OracleEncoding.cs
- LockedHandleGlyph.cs
- DataGridViewLayoutData.cs
- AnnotationService.cs
- ConfigurationManagerHelper.cs
- RawTextInputReport.cs
- HMACMD5.cs
- QilFunction.cs
- ViewEvent.cs
- WorkingDirectoryEditor.cs
- CustomError.cs
- Queue.cs
- __ComObject.cs
- sqlcontext.cs
- GPRECTF.cs
- GridViewSortEventArgs.cs
- JsonSerializer.cs
- ContentPresenter.cs
- LoginName.cs
- MenuItemBindingCollection.cs
- PointLightBase.cs
- X509UI.cs
- DocumentViewerBase.cs
- TextDpi.cs
- FaultPropagationQuery.cs
- CallbackHandler.cs
- EntityDataSourceContextCreatingEventArgs.cs
- AddDataControlFieldDialog.cs
- FixedSOMGroup.cs
- WebPartVerbsEventArgs.cs
- LinkUtilities.cs
- _FixedSizeReader.cs
- TypedServiceChannelBuilder.cs
- DesignOnlyAttribute.cs
- TableLayoutColumnStyleCollection.cs
- CodeComment.cs
- FeatureSupport.cs
- SqlExpressionNullability.cs
- WSDualHttpBinding.cs
- AsymmetricAlgorithm.cs
- AdapterUtil.cs
- ConfigurationLocationCollection.cs
- OutKeywords.cs