Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / Configuration / System / Configuration / ProviderSettings.cs / 1 / ProviderSettings.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Configuration
{
using System;
using System.Xml;
using System.Configuration;
using System.Collections.Specialized;
using System.Collections;
using System.IO;
using System.Text;
using System.Globalization;
public sealed class ProviderSettings : ConfigurationElement
{
private readonly ConfigurationProperty _propName =
new ConfigurationProperty( "name",
typeof( string ),
null, // no reasonable default
null, // use default converter
ConfigurationProperty.NonEmptyStringValidator,
ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey);
private readonly ConfigurationProperty _propType = new ConfigurationProperty("type", typeof(String), "", ConfigurationPropertyOptions.IsRequired);
private ConfigurationPropertyCollection _properties;
private NameValueCollection _PropertyNameCollection = null;
public ProviderSettings()
{
_properties = new ConfigurationPropertyCollection();
_properties.Add(_propName);
_properties.Add(_propType);
_PropertyNameCollection = null;
}
public ProviderSettings(String name, String type) : this()
{
Name = name;
Type = type;
}
protected internal override ConfigurationPropertyCollection Properties
{
get
{
UpdatePropertyCollection();
return _properties;
}
}
protected internal override void Unmerge(ConfigurationElement sourceElement,
ConfigurationElement parentElement,
ConfigurationSaveMode saveMode)
{
ProviderSettings parentProviders = parentElement as ProviderSettings;
if (parentProviders != null)
parentProviders.UpdatePropertyCollection(); // before reseting make sure the bag is filled in
ProviderSettings sourceProviders = sourceElement as ProviderSettings;
if (sourceProviders != null)
sourceProviders.UpdatePropertyCollection(); // before reseting make sure the bag is filled in
base.Unmerge(sourceElement, parentElement, saveMode);
UpdatePropertyCollection();
}
protected internal override void Reset(ConfigurationElement parentElement)
{
ProviderSettings parentProviders = parentElement as ProviderSettings;
if (parentProviders != null)
parentProviders.UpdatePropertyCollection(); // before reseting make sure the bag is filled in
base.Reset(parentElement);
}
internal bool UpdatePropertyCollection()
{
bool bIsModified = false;
ArrayList removeList = null;
if (_PropertyNameCollection != null)
{
// remove any data that has been delete from the collection
foreach (ConfigurationProperty prop in _properties)
{
if (prop.Name != "name" && prop.Name != "type")
{
if (_PropertyNameCollection.Get(prop.Name) == null)
{
// _properties.Remove(prop.Name);
if (removeList == null)
removeList = new ArrayList();
if ((Values.GetConfigValue(prop.Name).ValueFlags & ConfigurationValueFlags.Locked) == 0) {
removeList.Add(prop.Name);
bIsModified = true;
}
}
}
}
if (removeList != null)
{
foreach (string propName in removeList)
{
_properties.Remove(propName);
}
}
// then copy any data that has been changed in the collection
foreach (string Key in _PropertyNameCollection)
{
string valueInCollection = _PropertyNameCollection[Key];
string valueInBag = GetProperty(Key);
if (valueInBag == null || valueInCollection != valueInBag) // add new property
{
SetProperty(Key, valueInCollection);
bIsModified = true;
}
}
}
_PropertyNameCollection = null;
return bIsModified;
}
protected internal override bool IsModified()
{
return UpdatePropertyCollection() || base.IsModified();
}
[ConfigurationProperty("name", IsRequired = true, IsKey=true)]
public String Name
{
get
{
return (String)base[_propName];
}
set
{
base[_propName] = value;
}
}
[ConfigurationProperty("type", IsRequired = true)]
public String Type
{
get
{
return (String)base[_propType];
}
set
{
base[_propType] = value;
}
}
public NameValueCollection Parameters
{
get
{
if (_PropertyNameCollection == null)
{
lock (this)
{
if (_PropertyNameCollection == null)
{
_PropertyNameCollection = new NameValueCollection(StringComparer.Ordinal);
foreach (object de in _properties)
{
ConfigurationProperty prop = (ConfigurationProperty)de;
if (prop.Name != "name" && prop.Name != "type")
_PropertyNameCollection.Add(prop.Name, (string)base[prop]);
}
}
}
}
return (NameValueCollection)_PropertyNameCollection;
}
}
private string GetProperty(string PropName)
{
if (_properties.Contains(PropName))
{
ConfigurationProperty prop = _properties[PropName];
if(prop != null)
return (string)base[prop];
}
return null;
}
private bool SetProperty(string PropName,string value)
{
ConfigurationProperty SetPropName = null;
if (_properties.Contains(PropName))
SetPropName = _properties[PropName];
else
{
SetPropName = new ConfigurationProperty(PropName, typeof(string), null);
_properties.Add(SetPropName);
}
if (SetPropName != null)
{
base[SetPropName] = value;
// Parameters[PropName] = value;
return true;
}
else
return false;
}
protected override bool OnDeserializeUnrecognizedAttribute(String name, String value)
{
ConfigurationProperty _propName = new ConfigurationProperty(name, typeof(string), value);
_properties.Add(_propName);
base[_propName] = value; // Add them to the property bag
Parameters[name] = value;
return true;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Configuration
{
using System;
using System.Xml;
using System.Configuration;
using System.Collections.Specialized;
using System.Collections;
using System.IO;
using System.Text;
using System.Globalization;
public sealed class ProviderSettings : ConfigurationElement
{
private readonly ConfigurationProperty _propName =
new ConfigurationProperty( "name",
typeof( string ),
null, // no reasonable default
null, // use default converter
ConfigurationProperty.NonEmptyStringValidator,
ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey);
private readonly ConfigurationProperty _propType = new ConfigurationProperty("type", typeof(String), "", ConfigurationPropertyOptions.IsRequired);
private ConfigurationPropertyCollection _properties;
private NameValueCollection _PropertyNameCollection = null;
public ProviderSettings()
{
_properties = new ConfigurationPropertyCollection();
_properties.Add(_propName);
_properties.Add(_propType);
_PropertyNameCollection = null;
}
public ProviderSettings(String name, String type) : this()
{
Name = name;
Type = type;
}
protected internal override ConfigurationPropertyCollection Properties
{
get
{
UpdatePropertyCollection();
return _properties;
}
}
protected internal override void Unmerge(ConfigurationElement sourceElement,
ConfigurationElement parentElement,
ConfigurationSaveMode saveMode)
{
ProviderSettings parentProviders = parentElement as ProviderSettings;
if (parentProviders != null)
parentProviders.UpdatePropertyCollection(); // before reseting make sure the bag is filled in
ProviderSettings sourceProviders = sourceElement as ProviderSettings;
if (sourceProviders != null)
sourceProviders.UpdatePropertyCollection(); // before reseting make sure the bag is filled in
base.Unmerge(sourceElement, parentElement, saveMode);
UpdatePropertyCollection();
}
protected internal override void Reset(ConfigurationElement parentElement)
{
ProviderSettings parentProviders = parentElement as ProviderSettings;
if (parentProviders != null)
parentProviders.UpdatePropertyCollection(); // before reseting make sure the bag is filled in
base.Reset(parentElement);
}
internal bool UpdatePropertyCollection()
{
bool bIsModified = false;
ArrayList removeList = null;
if (_PropertyNameCollection != null)
{
// remove any data that has been delete from the collection
foreach (ConfigurationProperty prop in _properties)
{
if (prop.Name != "name" && prop.Name != "type")
{
if (_PropertyNameCollection.Get(prop.Name) == null)
{
// _properties.Remove(prop.Name);
if (removeList == null)
removeList = new ArrayList();
if ((Values.GetConfigValue(prop.Name).ValueFlags & ConfigurationValueFlags.Locked) == 0) {
removeList.Add(prop.Name);
bIsModified = true;
}
}
}
}
if (removeList != null)
{
foreach (string propName in removeList)
{
_properties.Remove(propName);
}
}
// then copy any data that has been changed in the collection
foreach (string Key in _PropertyNameCollection)
{
string valueInCollection = _PropertyNameCollection[Key];
string valueInBag = GetProperty(Key);
if (valueInBag == null || valueInCollection != valueInBag) // add new property
{
SetProperty(Key, valueInCollection);
bIsModified = true;
}
}
}
_PropertyNameCollection = null;
return bIsModified;
}
protected internal override bool IsModified()
{
return UpdatePropertyCollection() || base.IsModified();
}
[ConfigurationProperty("name", IsRequired = true, IsKey=true)]
public String Name
{
get
{
return (String)base[_propName];
}
set
{
base[_propName] = value;
}
}
[ConfigurationProperty("type", IsRequired = true)]
public String Type
{
get
{
return (String)base[_propType];
}
set
{
base[_propType] = value;
}
}
public NameValueCollection Parameters
{
get
{
if (_PropertyNameCollection == null)
{
lock (this)
{
if (_PropertyNameCollection == null)
{
_PropertyNameCollection = new NameValueCollection(StringComparer.Ordinal);
foreach (object de in _properties)
{
ConfigurationProperty prop = (ConfigurationProperty)de;
if (prop.Name != "name" && prop.Name != "type")
_PropertyNameCollection.Add(prop.Name, (string)base[prop]);
}
}
}
}
return (NameValueCollection)_PropertyNameCollection;
}
}
private string GetProperty(string PropName)
{
if (_properties.Contains(PropName))
{
ConfigurationProperty prop = _properties[PropName];
if(prop != null)
return (string)base[prop];
}
return null;
}
private bool SetProperty(string PropName,string value)
{
ConfigurationProperty SetPropName = null;
if (_properties.Contains(PropName))
SetPropName = _properties[PropName];
else
{
SetPropName = new ConfigurationProperty(PropName, typeof(string), null);
_properties.Add(SetPropName);
}
if (SetPropName != null)
{
base[SetPropName] = value;
// Parameters[PropName] = value;
return true;
}
else
return false;
}
protected override bool OnDeserializeUnrecognizedAttribute(String name, String value)
{
ConfigurationProperty _propName = new ConfigurationProperty(name, typeof(string), value);
_properties.Add(_propName);
base[_propName] = value; // Add them to the property bag
Parameters[name] = value;
return true;
}
}
}
// 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
- MessageAction.cs
- SqlAliaser.cs
- HandleCollector.cs
- VectorAnimation.cs
- VectorValueSerializer.cs
- EFColumnProvider.cs
- CompiledAction.cs
- XPathNodeHelper.cs
- CommonProperties.cs
- HtmlInputControl.cs
- XDRSchema.cs
- UInt16Storage.cs
- DbReferenceCollection.cs
- DefaultProxySection.cs
- PrinterResolution.cs
- DataTableExtensions.cs
- RecognitionResult.cs
- _LocalDataStore.cs
- XmlWriterTraceListener.cs
- DefinitionUpdate.cs
- AsyncResult.cs
- LoadItemsEventArgs.cs
- ResourceExpression.cs
- CodeTypeReferenceExpression.cs
- DateTimeParse.cs
- AutoResetEvent.cs
- ShellProvider.cs
- Argument.cs
- IResourceProvider.cs
- LinqDataSource.cs
- EntityDataSourceView.cs
- TextLineResult.cs
- WebPartConnectionsCloseVerb.cs
- StateMachineAction.cs
- UnaryExpression.cs
- DataControlLinkButton.cs
- SHA1Managed.cs
- SectionInformation.cs
- DataRowComparer.cs
- AnnouncementClient.cs
- DoubleAnimationUsingKeyFrames.cs
- Misc.cs
- MultilineStringConverter.cs
- AstNode.cs
- PageRanges.cs
- OracleParameter.cs
- CLSCompliantAttribute.cs
- AcceleratedTokenAuthenticator.cs
- MetadataArtifactLoaderResource.cs
- ExtractedStateEntry.cs
- Tokenizer.cs
- IsolatedStorageFilePermission.cs
- WarningException.cs
- XmlArrayAttribute.cs
- basemetadatamappingvisitor.cs
- EndEvent.cs
- VideoDrawing.cs
- SqlUDTStorage.cs
- FeatureManager.cs
- TraceHandlerErrorFormatter.cs
- TheQuery.cs
- SqlConnectionPoolProviderInfo.cs
- DynamicILGenerator.cs
- AssemblyNameEqualityComparer.cs
- XmlUrlResolver.cs
- MenuDesigner.cs
- SqlFacetAttribute.cs
- XmlDownloadManager.cs
- SqlGenerator.cs
- Main.cs
- Knowncolors.cs
- XmlNamespaceMappingCollection.cs
- DataGridViewAutoSizeModeEventArgs.cs
- FloaterBaseParaClient.cs
- SqlTrackingWorkflowInstance.cs
- TextRangeProviderWrapper.cs
- WebPartCatalogCloseVerb.cs
- Bold.cs
- PropertyInformation.cs
- ToolStripItemCollection.cs
- MetadataHelper.cs
- LoginView.cs
- ItemMap.cs
- AuthorizationSection.cs
- XDeferredAxisSource.cs
- KeyProperty.cs
- MethodSignatureGenerator.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- XPathItem.cs
- StringToken.cs
- LightweightCodeGenerator.cs
- ScriptBehaviorDescriptor.cs
- TextOnlyOutput.cs
- CompatibleComparer.cs
- ListSortDescription.cs
- SignatureDescription.cs
- HttpStaticObjectsCollectionWrapper.cs
- TraceContextEventArgs.cs
- TableDetailsRow.cs
- SqlMethodTransformer.cs