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
- HtmlTextViewAdapter.cs
- TextEditorThreadLocalStore.cs
- Int16Converter.cs
- IdentitySection.cs
- NGCUIElementCollectionSerializerAsync.cs
- InvokeMethod.cs
- SQLMembershipProvider.cs
- RowToFieldTransformer.cs
- SelectionItemProviderWrapper.cs
- COM2EnumConverter.cs
- BulletedListEventArgs.cs
- ApplySecurityAndSendAsyncResult.cs
- BamlLocalizabilityResolver.cs
- DocumentViewerAutomationPeer.cs
- ButtonFlatAdapter.cs
- JapaneseLunisolarCalendar.cs
- RpcCryptoRequest.cs
- RoleService.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- HandlerFactoryCache.cs
- XmlSerializerOperationFormatter.cs
- DeclarationUpdate.cs
- Event.cs
- compensatingcollection.cs
- SettingsBindableAttribute.cs
- RegexBoyerMoore.cs
- XmlQualifiedName.cs
- AdornedElementPlaceholder.cs
- CommonObjectSecurity.cs
- StrokeCollection.cs
- TextWriterTraceListener.cs
- OleDbWrapper.cs
- DoneReceivingAsyncResult.cs
- Transform3DGroup.cs
- ProcessingInstructionAction.cs
- DesignerTransaction.cs
- InvalidComObjectException.cs
- X509Chain.cs
- DecimalKeyFrameCollection.cs
- XmlQualifiedName.cs
- RelationshipFixer.cs
- CodeCastExpression.cs
- DynamicMethod.cs
- MutexSecurity.cs
- srgsitem.cs
- AsyncOperationManager.cs
- RepeaterCommandEventArgs.cs
- StringWriter.cs
- SourceExpressionException.cs
- TextSegment.cs
- NavigationCommands.cs
- LineMetrics.cs
- ProfileBuildProvider.cs
- RegexWorker.cs
- SystemIPGlobalProperties.cs
- UriSchemeKeyedCollection.cs
- ExecutionContext.cs
- WeakEventManager.cs
- XsdBuilder.cs
- WindowsListViewItemStartMenu.cs
- StylusEventArgs.cs
- GenericWebPart.cs
- TraceLevelStore.cs
- WebPartActionVerb.cs
- TimeIntervalCollection.cs
- EmptyReadOnlyDictionaryInternal.cs
- NamedPipeConnectionPoolSettings.cs
- MenuItemStyleCollection.cs
- RuleSetReference.cs
- PageFunction.cs
- AppDomainProtocolHandler.cs
- TypeFieldSchema.cs
- BuildResultCache.cs
- MailWriter.cs
- XmlIncludeAttribute.cs
- QueryableDataSource.cs
- CodeDomLoader.cs
- LocatorPart.cs
- RtfToken.cs
- BamlResourceDeserializer.cs
- MenuBase.cs
- DocumentReference.cs
- XMLDiffLoader.cs
- CodeCommentStatementCollection.cs
- Run.cs
- RootDesignerSerializerAttribute.cs
- RestHandler.cs
- TextContainerHelper.cs
- InstanceData.cs
- ObjectListCommandsPage.cs
- FileDataSource.cs
- DependencyObjectType.cs
- MetabaseServerConfig.cs
- WebConfigurationFileMap.cs
- TaskForm.cs
- AssemblyBuilderData.cs
- TrackPoint.cs
- SamlAuthenticationStatement.cs
- Pen.cs
- DataColumn.cs