Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- AlternationConverter.cs
- AppDomainProtocolHandler.cs
- KeyEvent.cs
- EncoderFallback.cs
- BulletDecorator.cs
- HandlerFactoryWrapper.cs
- RectangleGeometry.cs
- DataGridViewCellLinkedList.cs
- QilTernary.cs
- _LazyAsyncResult.cs
- DataGridParentRows.cs
- FrameworkContextData.cs
- Parsers.cs
- WSHttpBindingBaseElement.cs
- LinkDescriptor.cs
- BitmapEffectInput.cs
- DeviceContexts.cs
- BezierSegment.cs
- DropTarget.cs
- ImportContext.cs
- TextElementAutomationPeer.cs
- ListControlDataBindingHandler.cs
- InvokePatternIdentifiers.cs
- MissingSatelliteAssemblyException.cs
- EventLogger.cs
- ping.cs
- Constants.cs
- PointLight.cs
- ProvideValueServiceProvider.cs
- PageVisual.cs
- ITextView.cs
- ToolStripItemDesigner.cs
- QueryStringConverter.cs
- ProcessModelInfo.cs
- ResponseStream.cs
- HttpPostedFile.cs
- FormViewActionList.cs
- CompilerLocalReference.cs
- MouseEvent.cs
- LabelEditEvent.cs
- SpeakCompletedEventArgs.cs
- ToolboxItemFilterAttribute.cs
- HttpModule.cs
- Signature.cs
- EmbeddedMailObject.cs
- BasicHttpMessageSecurityElement.cs
- GeometryGroup.cs
- ImportOptions.cs
- QueryStringHandler.cs
- Typeface.cs
- CodeArrayCreateExpression.cs
- ToolStripDropDownButton.cs
- JulianCalendar.cs
- LayoutSettings.cs
- CreateUserWizard.cs
- EventDescriptor.cs
- DPCustomTypeDescriptor.cs
- DataServiceRequestException.cs
- Transform.cs
- SystemEvents.cs
- XmlCharType.cs
- XmlWhitespace.cs
- CodeDOMUtility.cs
- HtmlContainerControl.cs
- DataServiceProviderWrapper.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- TextEditorTables.cs
- IdentitySection.cs
- COM2Enum.cs
- DataRelation.cs
- PKCS1MaskGenerationMethod.cs
- ConfigurationValues.cs
- ListDictionaryInternal.cs
- altserialization.cs
- OrderByBuilder.cs
- IPPacketInformation.cs
- EmptyElement.cs
- ProtocolsConfigurationHandler.cs
- HandoffBehavior.cs
- SequenceRangeCollection.cs
- ProfileService.cs
- UTF32Encoding.cs
- KerberosReceiverSecurityToken.cs
- SoapIgnoreAttribute.cs
- ProtocolViolationException.cs
- TopClause.cs
- XPathSingletonIterator.cs
- StrongNamePublicKeyBlob.cs
- TextServicesCompartmentEventSink.cs
- PageFunction.cs
- ValidationService.cs
- XmlRootAttribute.cs
- AutomationPropertyInfo.cs
- Substitution.cs
- RegexGroup.cs
- NestedContainer.cs
- ParallelEnumerable.cs
- ServerIdentity.cs
- ActivationArguments.cs
- TdsEnums.cs