Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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;}
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- StrongNamePublicKeyBlob.cs
- MaskedTextBox.cs
- Win32SafeHandles.cs
- smtppermission.cs
- RtType.cs
- TextEditor.cs
- GenericIdentity.cs
- XMLSyntaxException.cs
- TrackBarRenderer.cs
- CubicEase.cs
- DataMemberFieldConverter.cs
- figurelengthconverter.cs
- Transform3D.cs
- MultiDataTrigger.cs
- NameService.cs
- ClockController.cs
- PointAnimationBase.cs
- MultiView.cs
- MaxValueConverter.cs
- DnsEndPoint.cs
- DtdParser.cs
- WebBrowserSiteBase.cs
- ObjectViewListener.cs
- SmtpNegotiateAuthenticationModule.cs
- QueryContinueDragEventArgs.cs
- DesignerOptionService.cs
- InputLanguageProfileNotifySink.cs
- RowCache.cs
- WebBrowser.cs
- AdPostCacheSubstitution.cs
- DispatcherTimer.cs
- SqlConnectionStringBuilder.cs
- TargetInvocationException.cs
- APCustomTypeDescriptor.cs
- GridProviderWrapper.cs
- TreeViewImageGenerator.cs
- ContextProperty.cs
- HttpFileCollection.cs
- TableChangeProcessor.cs
- Repeater.cs
- SoapSchemaExporter.cs
- AutomationIdentifier.cs
- TcpAppDomainProtocolHandler.cs
- TableLayoutSettingsTypeConverter.cs
- StorageEntityContainerMapping.cs
- UserPreferenceChangedEventArgs.cs
- SurrogateSelector.cs
- Function.cs
- DataGridTextBox.cs
- NetTcpSection.cs
- ProtocolsConfigurationHandler.cs
- ColumnPropertiesGroup.cs
- SharedPersonalizationStateInfo.cs
- DataGridViewComboBoxColumnDesigner.cs
- SHA1.cs
- CLSCompliantAttribute.cs
- EnvironmentPermission.cs
- GregorianCalendar.cs
- TextTreePropertyUndoUnit.cs
- MultipleViewPattern.cs
- RequiredFieldValidator.cs
- HashMembershipCondition.cs
- Overlapped.cs
- GenerateHelper.cs
- hresults.cs
- OutputCacheSettings.cs
- CustomCategoryAttribute.cs
- MouseBinding.cs
- AnnotationComponentManager.cs
- PagedDataSource.cs
- XmlDocumentSurrogate.cs
- AppDomainUnloadedException.cs
- ColumnResizeAdorner.cs
- UpdateCompiler.cs
- XmlDocumentType.cs
- WindowsButton.cs
- DbProviderFactories.cs
- PathSegmentCollection.cs
- ECDiffieHellmanPublicKey.cs
- ArgumentNullException.cs
- TextTreeText.cs
- UserControlParser.cs
- IsolatedStorageFileStream.cs
- ScaleTransform3D.cs
- ImportRequest.cs
- VersionedStream.cs
- HttpWebRequestElement.cs
- WebPartDisplayMode.cs
- QueryableDataSourceEditData.cs
- QuaternionAnimation.cs
- ErrorProvider.cs
- EdmFunction.cs
- UIElement3DAutomationPeer.cs
- SiteMapNodeItemEventArgs.cs
- NamespaceEmitter.cs
- InkCanvas.cs
- EmissiveMaterial.cs
- XmlEventCache.cs
- SchemaCollectionCompiler.cs
- DataGridViewLayoutData.cs