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
- ProgressPage.cs
- DictionaryEntry.cs
- FieldAccessException.cs
- ipaddressinformationcollection.cs
- WpfGeneratedKnownProperties.cs
- WebContext.cs
- ButtonChrome.cs
- ListMarkerLine.cs
- DisplayInformation.cs
- FtpCachePolicyElement.cs
- BamlResourceSerializer.cs
- UniqueConstraint.cs
- DivideByZeroException.cs
- wmiprovider.cs
- SchemaElement.cs
- BitSet.cs
- WebPartConnectionCollection.cs
- LongValidatorAttribute.cs
- QilGeneratorEnv.cs
- WindowShowOrOpenTracker.cs
- DataViewSetting.cs
- Type.cs
- HostedTransportConfigurationBase.cs
- UidPropertyAttribute.cs
- MetabaseServerConfig.cs
- XamlSerializationHelper.cs
- GraphicsPathIterator.cs
- XmlSchemaIdentityConstraint.cs
- QueryExpression.cs
- MethodMessage.cs
- RepeatButton.cs
- ScriptRegistrationManager.cs
- SQlBooleanStorage.cs
- OleDbWrapper.cs
- EncryptedPackage.cs
- PersonalizationDictionary.cs
- CodeDomSerializer.cs
- ZoneMembershipCondition.cs
- ConnectionPoolManager.cs
- WeakReferenceKey.cs
- RuleConditionDialog.Designer.cs
- FilterElement.cs
- OneOfElement.cs
- ThreadNeutralSemaphore.cs
- IdentityValidationException.cs
- CloseCollectionAsyncResult.cs
- ParameterExpression.cs
- DisableDpiAwarenessAttribute.cs
- WebPartCancelEventArgs.cs
- WindowInteropHelper.cs
- HashAlgorithm.cs
- cryptoapiTransform.cs
- DrawingBrush.cs
- FixedSOMTableRow.cs
- AppDomainAttributes.cs
- FolderBrowserDialog.cs
- SqlBooleanMismatchVisitor.cs
- RepeatBehaviorConverter.cs
- SiteMapProvider.cs
- TextParagraphProperties.cs
- ContentControl.cs
- SimpleRecyclingCache.cs
- ReservationCollection.cs
- WebHttpDispatchOperationSelectorData.cs
- NativeMethods.cs
- SqlDataSourceSelectingEventArgs.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- PeerNameResolver.cs
- QueryOutputWriter.cs
- HttpWebResponse.cs
- SystemThemeKey.cs
- Helper.cs
- Visual3D.cs
- ContentType.cs
- RepeaterItemEventArgs.cs
- ProtocolsConfigurationEntry.cs
- ConfigUtil.cs
- WebPartConnectionsCancelVerb.cs
- SvcMapFileSerializer.cs
- XmlQualifiedName.cs
- Not.cs
- SplineKeyFrames.cs
- XmlSecureResolver.cs
- TypeNameConverter.cs
- Bidi.cs
- XPathNavigatorKeyComparer.cs
- EmissiveMaterial.cs
- SqlCrossApplyToCrossJoin.cs
- CompiledQuery.cs
- DetailsViewUpdatedEventArgs.cs
- LinqDataSourceValidationException.cs
- SoapFormatterSinks.cs
- UInt64.cs
- TrustManager.cs
- SecurityKeyIdentifier.cs
- DesignOnlyAttribute.cs
- RegistryHandle.cs
- PatternMatcher.cs
- VisualTreeHelper.cs
- DirectoryObjectSecurity.cs