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
- RotateTransform3D.cs
- SwitchLevelAttribute.cs
- BypassElement.cs
- mediaclock.cs
- WindowsTokenRoleProvider.cs
- SelectionList.cs
- PerfCounters.cs
- MethodBuilder.cs
- StringFunctions.cs
- DataRowExtensions.cs
- XPathScanner.cs
- xamlnodes.cs
- MenuAutomationPeer.cs
- SmtpReplyReader.cs
- Propagator.ExtentPlaceholderCreator.cs
- DynamicActivity.cs
- basevalidator.cs
- HtmlInputCheckBox.cs
- CodeGenerator.cs
- CompilerInfo.cs
- GenericsInstances.cs
- UniqueEventHelper.cs
- CharacterString.cs
- ListViewUpdateEventArgs.cs
- KeyConstraint.cs
- DeferredReference.cs
- ContextStaticAttribute.cs
- PickBranchDesigner.xaml.cs
- ComponentEditorPage.cs
- MobileSysDescriptionAttribute.cs
- SecurityManager.cs
- IntegerValidator.cs
- ConfigXmlSignificantWhitespace.cs
- StyleCollection.cs
- ProfilePropertySettings.cs
- ResourceReferenceExpression.cs
- OleDbStruct.cs
- NameService.cs
- DesignTimeHTMLTextWriter.cs
- RenameRuleObjectDialog.cs
- uribuilder.cs
- ChannelServices.cs
- ProcessModelInfo.cs
- NotificationContext.cs
- PersonalizableTypeEntry.cs
- BulletedList.cs
- InternalConfigSettingsFactory.cs
- FormsAuthenticationUser.cs
- KeyedHashAlgorithm.cs
- VariantWrapper.cs
- WhileDesigner.cs
- CodeAttributeDeclaration.cs
- DNS.cs
- ScalarConstant.cs
- EntityModelSchemaGenerator.cs
- DetailsViewUpdatedEventArgs.cs
- ResourcePermissionBase.cs
- NullToBooleanConverter.cs
- URLEditor.cs
- XamlReaderHelper.cs
- GeometryDrawing.cs
- RenamedEventArgs.cs
- XmlSchemaObjectCollection.cs
- WebPartActionVerb.cs
- BooleanSwitch.cs
- FloaterParagraph.cs
- _HeaderInfo.cs
- SerTrace.cs
- OverlappedAsyncResult.cs
- CustomCategoryAttribute.cs
- DrawingContext.cs
- AssemblyAttributesGoHere.cs
- SerializerWriterEventHandlers.cs
- EmptyReadOnlyDictionaryInternal.cs
- Int32CollectionConverter.cs
- Cursors.cs
- BindUriHelper.cs
- EllipticalNodeOperations.cs
- AutomationPropertyChangedEventArgs.cs
- UpdateRecord.cs
- PolicyManager.cs
- ByteStack.cs
- MaskedTextBox.cs
- HtmlForm.cs
- NamedPermissionSet.cs
- MessageBox.cs
- GlyphRun.cs
- ZoomPercentageConverter.cs
- ParameterModifier.cs
- ContentPresenter.cs
- ControlParameter.cs
- BindingGroup.cs
- Memoizer.cs
- RuleEngine.cs
- PermissionListSet.cs
- TemplateXamlTreeBuilder.cs
- UnmanagedMemoryStream.cs
- AdornerHitTestResult.cs
- EventData.cs
- NamespaceImport.cs