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
- DesignerCatalogPartChrome.cs
- NullReferenceException.cs
- DBPropSet.cs
- ProfileParameter.cs
- ControlDesigner.cs
- VisualStyleInformation.cs
- TheQuery.cs
- Serialization.cs
- ToolStripProgressBar.cs
- Grant.cs
- ExternalCalls.cs
- DataServiceContext.cs
- View.cs
- ListenerChannelContext.cs
- OutputCacheSettings.cs
- PageBreakRecord.cs
- DispatcherExceptionEventArgs.cs
- StandardToolWindows.cs
- ChangeBlockUndoRecord.cs
- ImageMapEventArgs.cs
- MachineSettingsSection.cs
- Point3DCollection.cs
- HtmlInputFile.cs
- ForAllOperator.cs
- MergePropertyDescriptor.cs
- Sentence.cs
- BuildResultCache.cs
- Visual3D.cs
- SmiGettersStream.cs
- ProfileServiceManager.cs
- MbpInfo.cs
- SessionStateSection.cs
- RemotingException.cs
- SspiNegotiationTokenProvider.cs
- ResourceDefaultValueAttribute.cs
- FontNamesConverter.cs
- HiddenFieldPageStatePersister.cs
- DiagnosticsConfiguration.cs
- ElapsedEventArgs.cs
- ListViewDataItem.cs
- TemplateBindingExtensionConverter.cs
- SiteMapDataSource.cs
- ReaderContextStackData.cs
- SocketInformation.cs
- EventBindingService.cs
- OdbcEnvironment.cs
- BindingOperations.cs
- DefaultMemberAttribute.cs
- ProtocolsConfigurationEntry.cs
- VirtualDirectoryMapping.cs
- XsdDataContractExporter.cs
- SqlDataSourceParameterParser.cs
- ListViewHitTestInfo.cs
- AuthenticatedStream.cs
- ContractComponent.cs
- ButtonBase.cs
- CodeExporter.cs
- WriteableOnDemandStream.cs
- SoapCodeExporter.cs
- ScriptControlManager.cs
- DataControlField.cs
- ScrollBar.cs
- DbModificationCommandTree.cs
- LingerOption.cs
- DependencySource.cs
- ReliableSessionElement.cs
- GraphicsContext.cs
- InstanceNameConverter.cs
- TextServicesDisplayAttributePropertyRanges.cs
- EditorPartChrome.cs
- ContainerAction.cs
- CodeTypeOfExpression.cs
- RelationshipFixer.cs
- Timeline.cs
- MemberDescriptor.cs
- mediaeventargs.cs
- BrowserCapabilitiesFactoryBase.cs
- ImageField.cs
- OptimalBreakSession.cs
- BrushValueSerializer.cs
- TextParagraphView.cs
- ActivityStatusChangeEventArgs.cs
- CategoryGridEntry.cs
- EmptyImpersonationContext.cs
- KeyPullup.cs
- CSharpCodeProvider.cs
- DrawTreeNodeEventArgs.cs
- HostingPreferredMapPath.cs
- DesignerDataParameter.cs
- Normalization.cs
- TemplatePagerField.cs
- CustomCategoryAttribute.cs
- DbgCompiler.cs
- Vector3DAnimationBase.cs
- Queue.cs
- LayoutUtils.cs
- PeerApplicationLaunchInfo.cs
- RealProxy.cs
- Help.cs
- RemotingAttributes.cs