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
- datacache.cs
- KeyValueSerializer.cs
- ScopelessEnumAttribute.cs
- AutomationPropertyInfo.cs
- Attributes.cs
- Soap12ProtocolImporter.cs
- ClientTargetCollection.cs
- IriParsingElement.cs
- SqlBulkCopyColumnMappingCollection.cs
- CopyAttributesAction.cs
- TextDecorationLocationValidation.cs
- DocumentAutomationPeer.cs
- HotSpotCollection.cs
- DirectoryNotFoundException.cs
- StateManager.cs
- GridLengthConverter.cs
- MaterialGroup.cs
- FileAuthorizationModule.cs
- ServicePointManagerElement.cs
- ControlPropertyNameConverter.cs
- DrawingBrush.cs
- SecurityContext.cs
- Point.cs
- AstTree.cs
- SizeConverter.cs
- CultureSpecificCharacterBufferRange.cs
- FixedSOMPageElement.cs
- FormViewInsertedEventArgs.cs
- StringArrayEditor.cs
- _LocalDataStore.cs
- XmlRootAttribute.cs
- CodeNamespaceImportCollection.cs
- FigureParagraph.cs
- RestClientProxyHandler.cs
- DesignTimeVisibleAttribute.cs
- HttpWebResponse.cs
- PropertyGridCommands.cs
- ThemeInfoAttribute.cs
- HtmlInputCheckBox.cs
- JsonClassDataContract.cs
- SBCSCodePageEncoding.cs
- FloaterBaseParaClient.cs
- SafeFreeMibTable.cs
- Error.cs
- VerificationException.cs
- BufferedGraphics.cs
- SoapObjectWriter.cs
- ArgumentException.cs
- XhtmlTextWriter.cs
- ScriptingSectionGroup.cs
- AuthorizationRuleCollection.cs
- InvalidFilterCriteriaException.cs
- MaskDescriptors.cs
- RowToParametersTransformer.cs
- Application.cs
- DataGridItemEventArgs.cs
- JsonEncodingStreamWrapper.cs
- MenuAdapter.cs
- HwndKeyboardInputProvider.cs
- ArgIterator.cs
- SHA1Managed.cs
- DynamicMethod.cs
- XmlSyndicationContent.cs
- ClientOptions.cs
- WebBrowserBase.cs
- RtfControlWordInfo.cs
- SharedPersonalizationStateInfo.cs
- DocumentOrderQuery.cs
- CompilerScopeManager.cs
- TextDataBindingHandler.cs
- ActivationServices.cs
- Stylesheet.cs
- EntityAdapter.cs
- IndentedTextWriter.cs
- IsolatedStorage.cs
- WebEventCodes.cs
- ServiceOperationWrapper.cs
- SEHException.cs
- DataGridViewColumnTypePicker.cs
- PartitionResolver.cs
- precedingsibling.cs
- Attributes.cs
- ColumnWidthChangingEvent.cs
- latinshape.cs
- RelatedImageListAttribute.cs
- HttpCapabilitiesEvaluator.cs
- InternalTypeHelper.cs
- SqlConnectionStringBuilder.cs
- ConfigurationStrings.cs
- SendActivity.cs
- FtpWebResponse.cs
- AccessibleObject.cs
- UnitySerializationHolder.cs
- Matrix3D.cs
- Int64AnimationUsingKeyFrames.cs
- SwitchElementsCollection.cs
- DocumentApplicationJournalEntry.cs
- TableLayout.cs
- ResourcesChangeInfo.cs
- DataTablePropertyDescriptor.cs