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
- Conditional.cs
- SqlNodeAnnotations.cs
- SystemWebExtensionsSectionGroup.cs
- FloaterParaClient.cs
- ObjectStateManager.cs
- ProvidePropertyAttribute.cs
- ObjectViewEntityCollectionData.cs
- DefaultAssemblyResolver.cs
- ClientSettingsSection.cs
- XamlToRtfParser.cs
- MetadataUtilsSmi.cs
- AccessDataSource.cs
- BooleanExpr.cs
- _UriTypeConverter.cs
- ResourceDescriptionAttribute.cs
- VBIdentifierName.cs
- XmlName.cs
- BaseTemplateParser.cs
- HttpStreamFormatter.cs
- VirtualPathUtility.cs
- DuplicateWaitObjectException.cs
- FloaterBaseParagraph.cs
- StringUtil.cs
- TripleDESCryptoServiceProvider.cs
- Semaphore.cs
- GridPattern.cs
- VisualTreeUtils.cs
- StylusPointPropertyInfoDefaults.cs
- AnnouncementSendsAsyncResult.cs
- CompositeFontParser.cs
- PatternMatcher.cs
- AssertValidation.cs
- CustomErrorsSectionWrapper.cs
- LocatorPart.cs
- ReservationCollection.cs
- DbDataRecord.cs
- RijndaelCryptoServiceProvider.cs
- OleDbTransaction.cs
- Light.cs
- AppModelKnownContentFactory.cs
- _LocalDataStoreMgr.cs
- HScrollBar.cs
- JumpItem.cs
- SQLInt64Storage.cs
- SystemDiagnosticsSection.cs
- PerformanceCounterPermissionAttribute.cs
- DictionarySurrogate.cs
- SqlRetyper.cs
- AttributeCollection.cs
- ContextBase.cs
- FileDataSourceCache.cs
- MasterPageCodeDomTreeGenerator.cs
- Vector3DAnimationBase.cs
- PlainXmlSerializer.cs
- ResourceBinder.cs
- ManagementOptions.cs
- PDBReader.cs
- TypeUtils.cs
- Container.cs
- LineServicesCallbacks.cs
- PreviousTrackingServiceAttribute.cs
- SqlRowUpdatingEvent.cs
- _ScatterGatherBuffers.cs
- XPathMultyIterator.cs
- UnsafeNativeMethods.cs
- WpfGeneratedKnownProperties.cs
- EventPrivateKey.cs
- DefaultValueAttribute.cs
- TabControlAutomationPeer.cs
- Model3D.cs
- TryCatchDesigner.xaml.cs
- ClientBuildManager.cs
- HttpModuleActionCollection.cs
- PointHitTestResult.cs
- RedirectionProxy.cs
- BufferBuilder.cs
- InternalBufferOverflowException.cs
- BorderGapMaskConverter.cs
- TimeEnumHelper.cs
- FixedTextSelectionProcessor.cs
- ImageFormatConverter.cs
- CustomError.cs
- CodeAttributeArgumentCollection.cs
- EmptyElement.cs
- StackBuilderSink.cs
- DomainConstraint.cs
- DataGridViewRowHeaderCell.cs
- CheckBoxDesigner.cs
- EndOfStreamException.cs
- ScaleTransform3D.cs
- LinearGradientBrush.cs
- CodeBlockBuilder.cs
- LogReservationCollection.cs
- TickBar.cs
- MenuBase.cs
- SortedList.cs
- FileChangesMonitor.cs
- DebugView.cs
- GenericIdentity.cs
- CustomTrackingQuery.cs