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
- TextChangedEventArgs.cs
- XPathMultyIterator.cs
- WebRequestModulesSection.cs
- ReadOnlyHierarchicalDataSourceView.cs
- Attributes.cs
- XmlSerializerFactory.cs
- PersistenceContextEnlistment.cs
- AutomationFocusChangedEventArgs.cs
- TextCollapsingProperties.cs
- TextServicesContext.cs
- DataGridViewCellPaintingEventArgs.cs
- DesignerForm.cs
- CodeExporter.cs
- Matrix3D.cs
- Pair.cs
- DefaultWorkflowLoaderService.cs
- DynamicValueConverter.cs
- CompositionTarget.cs
- XmlSchemaChoice.cs
- MatrixConverter.cs
- Journaling.cs
- CommunicationException.cs
- TrackingDataItemValue.cs
- StylusDownEventArgs.cs
- MemoryMappedFile.cs
- FactoryGenerator.cs
- PageClientProxyGenerator.cs
- NumericPagerField.cs
- RichTextBox.cs
- XPathSelectionIterator.cs
- MetafileHeaderWmf.cs
- FormatterServicesNoSerializableCheck.cs
- ReservationNotFoundException.cs
- ConfigurationFileMap.cs
- VScrollProperties.cs
- SmiMetaData.cs
- hwndwrapper.cs
- EnumerableRowCollectionExtensions.cs
- XmlnsCache.cs
- UDPClient.cs
- SecurityContext.cs
- CodeTypeConstructor.cs
- HttpUnhandledOperationInvoker.cs
- EntitySqlQueryCacheEntry.cs
- MetabaseServerConfig.cs
- ErrorFormatterPage.cs
- VisualCollection.cs
- UnsignedPublishLicense.cs
- FlowDocumentReader.cs
- SubpageParagraph.cs
- ChangeTracker.cs
- Panel.cs
- InputMethodStateChangeEventArgs.cs
- WinInet.cs
- ServiceDesigner.cs
- xmlglyphRunInfo.cs
- SizeChangedEventArgs.cs
- EditorPartChrome.cs
- XmlQueryContext.cs
- ArgumentOutOfRangeException.cs
- SynchronousSendBindingElement.cs
- ObjectHandle.cs
- DoubleCollection.cs
- SrgsDocument.cs
- PropertyDescriptorCollection.cs
- CollectionConverter.cs
- Activator.cs
- DataPagerField.cs
- QilReference.cs
- CommonDialog.cs
- DataGridRelationshipRow.cs
- ListViewInsertionMark.cs
- LocalValueEnumerator.cs
- ExpressionEditorAttribute.cs
- SqlError.cs
- GuidelineCollection.cs
- XD.cs
- HttpListenerPrefixCollection.cs
- GlobalizationSection.cs
- PageStatePersister.cs
- EntityProviderFactory.cs
- EventProviderBase.cs
- SqlProfileProvider.cs
- DynamicPropertyHolder.cs
- Verify.cs
- RangeBase.cs
- ObjectViewQueryResultData.cs
- _BaseOverlappedAsyncResult.cs
- Int32CollectionValueSerializer.cs
- SelectingProviderEventArgs.cs
- Rectangle.cs
- DrawingContextWalker.cs
- IntSecurity.cs
- PassportAuthentication.cs
- ClientConfigurationSystem.cs
- ViewBase.cs
- SqlDependency.cs
- SapiInterop.cs
- Axis.cs
- ReflectTypeDescriptionProvider.cs