Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Sys / System / Configuration / NameValueSectionHandler.cs / 1 / NameValueSectionHandler.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
///
public class NameValueSectionHandler : IConfigurationSectionHandler {
const string defaultKeyAttribute = "key";
const string defaultValueAttribute = "value";
///
/// [To be supplied.]
///
public object Create(object parent, object context, XmlNode section) {
return CreateStatic(parent, section, KeyAttributeName, ValueAttributeName);
}
internal static object CreateStatic(object parent, XmlNode section) {
return CreateStatic(parent, section, defaultKeyAttribute, defaultValueAttribute);
}
internal static object CreateStatic(object parent, XmlNode section, string keyAttriuteName, string valueAttributeName) {
ReadOnlyNameValueCollection result;
// start result off as a shallow clone of the parent
if (parent == null)
result = new ReadOnlyNameValueCollection(StringComparer.OrdinalIgnoreCase);
else {
ReadOnlyNameValueCollection parentCollection = (ReadOnlyNameValueCollection)parent;
result = new ReadOnlyNameValueCollection(parentCollection);
}
// process XML
HandlerBase.CheckForUnrecognizedAttributes(section);
foreach (XmlNode child in section.ChildNodes) {
// skip whitespace and comments
if (HandlerBase.IsIgnorableAlsoCheckForNonElement(child))
continue;
// handle , , tags
if (child.Name == "add") {
String key = HandlerBase.RemoveRequiredAttribute(child, keyAttriuteName);
String value = HandlerBase.RemoveRequiredAttribute(child, valueAttributeName, true/*allowEmptyString*/);
HandlerBase.CheckForUnrecognizedAttributes(child);
result[key] = value;
}
else if (child.Name == "remove") {
String key = HandlerBase.RemoveRequiredAttribute(child, keyAttriuteName);
HandlerBase.CheckForUnrecognizedAttributes(child);
result.Remove(key);
}
else if (child.Name.Equals("clear")) {
HandlerBase.CheckForUnrecognizedAttributes(child);
result.Clear();
}
else {
HandlerBase.ThrowUnrecognizedElement(child);
}
}
result.SetReadOnly();
return result;
}
///
/// [To be supplied.]
///
protected virtual string KeyAttributeName {
get { return defaultKeyAttribute;}
}
///
/// [To be supplied.]
///
protected virtual string ValueAttributeName {
get { return defaultValueAttribute;}
}
}
}
// 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
///
public class NameValueSectionHandler : IConfigurationSectionHandler {
const string defaultKeyAttribute = "key";
const string defaultValueAttribute = "value";
///
/// [To be supplied.]
///
public object Create(object parent, object context, XmlNode section) {
return CreateStatic(parent, section, KeyAttributeName, ValueAttributeName);
}
internal static object CreateStatic(object parent, XmlNode section) {
return CreateStatic(parent, section, defaultKeyAttribute, defaultValueAttribute);
}
internal static object CreateStatic(object parent, XmlNode section, string keyAttriuteName, string valueAttributeName) {
ReadOnlyNameValueCollection result;
// start result off as a shallow clone of the parent
if (parent == null)
result = new ReadOnlyNameValueCollection(StringComparer.OrdinalIgnoreCase);
else {
ReadOnlyNameValueCollection parentCollection = (ReadOnlyNameValueCollection)parent;
result = new ReadOnlyNameValueCollection(parentCollection);
}
// process XML
HandlerBase.CheckForUnrecognizedAttributes(section);
foreach (XmlNode child in section.ChildNodes) {
// skip whitespace and comments
if (HandlerBase.IsIgnorableAlsoCheckForNonElement(child))
continue;
// handle , , tags
if (child.Name == "add") {
String key = HandlerBase.RemoveRequiredAttribute(child, keyAttriuteName);
String value = HandlerBase.RemoveRequiredAttribute(child, valueAttributeName, true/*allowEmptyString*/);
HandlerBase.CheckForUnrecognizedAttributes(child);
result[key] = value;
}
else if (child.Name == "remove") {
String key = HandlerBase.RemoveRequiredAttribute(child, keyAttriuteName);
HandlerBase.CheckForUnrecognizedAttributes(child);
result.Remove(key);
}
else if (child.Name.Equals("clear")) {
HandlerBase.CheckForUnrecognizedAttributes(child);
result.Clear();
}
else {
HandlerBase.ThrowUnrecognizedElement(child);
}
}
result.SetReadOnly();
return result;
}
///
/// [To be supplied.]
///
protected virtual string KeyAttributeName {
get { return defaultKeyAttribute;}
}
///
/// [To be supplied.]
///
protected virtual string ValueAttributeName {
get { return defaultValueAttribute;}
}
}
}
// 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
- DesignerSerializationOptionsAttribute.cs
- UriParserTemplates.cs
- RadioButtonFlatAdapter.cs
- TextTreeFixupNode.cs
- XmlSchemaValidator.cs
- FaultCode.cs
- DebugViewWriter.cs
- WindowsListViewSubItem.cs
- GridViewUpdateEventArgs.cs
- BulletDecorator.cs
- TemplateContainer.cs
- XmlSchema.cs
- RadioButtonPopupAdapter.cs
- IIS7WorkerRequest.cs
- XPathDocument.cs
- ContextMenu.cs
- XmlAnyElementAttribute.cs
- ExternalException.cs
- WindowsFormsHostPropertyMap.cs
- DragDeltaEventArgs.cs
- BitmapImage.cs
- NamespaceInfo.cs
- CodeDomLocalizationProvider.cs
- ViewStateException.cs
- ObjectStateEntry.cs
- HierarchicalDataSourceControl.cs
- AssemblyResourceLoader.cs
- CachedTypeface.cs
- DataBindingHandlerAttribute.cs
- NonParentingControl.cs
- SoundPlayerAction.cs
- PersonalizablePropertyEntry.cs
- ToolStripPanelCell.cs
- Semaphore.cs
- WebMessageFormatHelper.cs
- _TransmitFileOverlappedAsyncResult.cs
- BuiltInExpr.cs
- CanonicalXml.cs
- EmptyControlCollection.cs
- DataGridViewBand.cs
- ExpressionVisitorHelpers.cs
- DataGridToolTip.cs
- SQLInt64Storage.cs
- ForeignKeyConstraint.cs
- SecurityHelper.cs
- WindowsFont.cs
- SocketInformation.cs
- COM2EnumConverter.cs
- ListViewHitTestInfo.cs
- WebEvents.cs
- BezierSegment.cs
- TraceSection.cs
- ElementHost.cs
- SingleObjectCollection.cs
- WindowsRichEditRange.cs
- MsmqBindingElementBase.cs
- Condition.cs
- XmlSchemaDocumentation.cs
- PtsPage.cs
- StoreAnnotationsMap.cs
- DefaultObjectSerializer.cs
- StylusOverProperty.cs
- RelatedCurrencyManager.cs
- QueryGeneratorBase.cs
- Mutex.cs
- OpenTypeCommon.cs
- DesignerVerbToolStripMenuItem.cs
- LeftCellWrapper.cs
- FontEmbeddingManager.cs
- Int32Animation.cs
- CodeTypeReferenceCollection.cs
- BitStack.cs
- TraversalRequest.cs
- SystemTcpConnection.cs
- ConnectionPoint.cs
- Comparer.cs
- UseAttributeSetsAction.cs
- BridgeDataRecord.cs
- CodeCastExpression.cs
- COM2PictureConverter.cs
- PropertyInfoSet.cs
- DllHostedComPlusServiceHost.cs
- RubberbandSelector.cs
- WriteableOnDemandStream.cs
- AnnotationHighlightLayer.cs
- MDIControlStrip.cs
- UseAttributeSetsAction.cs
- CustomAssemblyResolver.cs
- HotSpotCollection.cs
- MarginCollapsingState.cs
- SQLConvert.cs
- DomainLiteralReader.cs
- SecurityContextKeyIdentifierClause.cs
- LongAverageAggregationOperator.cs
- SymbolMethod.cs
- HighContrastHelper.cs
- TypedElement.cs
- FragmentNavigationEventArgs.cs
- RawStylusSystemGestureInputReport.cs
- ResourceContainer.cs