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
- _DisconnectOverlappedAsyncResult.cs
- XmlBinaryReader.cs
- FontUnit.cs
- EventProxy.cs
- DataTable.cs
- XmlnsDefinitionAttribute.cs
- rsa.cs
- MetadataPropertyvalue.cs
- XmlLinkedNode.cs
- TemplateColumn.cs
- RtfControlWordInfo.cs
- PolicyDesigner.cs
- FixedSOMTableRow.cs
- StorageFunctionMapping.cs
- TargetPerspective.cs
- KeyGesture.cs
- StorageEntitySetMapping.cs
- Int32.cs
- DeferredSelectedIndexReference.cs
- MetadataSource.cs
- CustomAttributeBuilder.cs
- WorkflowViewStateService.cs
- ElementMarkupObject.cs
- GroupQuery.cs
- XmlAnyElementAttribute.cs
- MultiByteCodec.cs
- XmlTextReader.cs
- PagedControl.cs
- ToolStripPanelDesigner.cs
- BaseContextMenu.cs
- SqlBuffer.cs
- TransformPattern.cs
- ModuleConfigurationInfo.cs
- XmlChildNodes.cs
- Geometry3D.cs
- DataRow.cs
- TextParagraphCache.cs
- DisplayInformation.cs
- DateRangeEvent.cs
- ViewEvent.cs
- Speller.cs
- WebPartDisplayMode.cs
- CurrentTimeZone.cs
- ScriptReferenceEventArgs.cs
- InvalidWMPVersionException.cs
- RowToParametersTransformer.cs
- HttpClientCertificate.cs
- DataRelation.cs
- ProcessThread.cs
- DataBoundLiteralControl.cs
- BlobPersonalizationState.cs
- DataServiceHostFactory.cs
- ConstraintStruct.cs
- TextRunCache.cs
- ProfileProvider.cs
- DateTime.cs
- UpdateException.cs
- OneWayChannelListener.cs
- OuterGlowBitmapEffect.cs
- ClientType.cs
- IssuanceTokenProviderBase.cs
- RefreshPropertiesAttribute.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- thaishape.cs
- CursorEditor.cs
- returneventsaver.cs
- ObjectRef.cs
- SafeCryptoHandles.cs
- SimpleMailWebEventProvider.cs
- CommandHelper.cs
- ObjectList.cs
- DataGridViewCellMouseEventArgs.cs
- AccessibleObject.cs
- AppSettingsReader.cs
- ToolStripGrip.cs
- XhtmlMobileTextWriter.cs
- InputScope.cs
- ObjectListDesigner.cs
- ParserOptions.cs
- ExpressionBuilder.cs
- TextTreeInsertUndoUnit.cs
- PixelFormatConverter.cs
- VerificationAttribute.cs
- MaskInputRejectedEventArgs.cs
- AnonymousIdentificationModule.cs
- StylusEditingBehavior.cs
- SimpleTextLine.cs
- TargetControlTypeCache.cs
- SID.cs
- DataObject.cs
- StatusBarAutomationPeer.cs
- UpdateManifestForBrowserApplication.cs
- SettingsPropertyValueCollection.cs
- unitconverter.cs
- GC.cs
- AuthenticationModulesSection.cs
- ControlIdConverter.cs
- SymbolEqualComparer.cs
- ScrollableControl.cs
- RankException.cs