Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / Sys / System / Configuration / SettingsBase.cs / 1 / SettingsBase.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Configuration {
using System.Collections.Specialized;
using System.Runtime.Serialization;
using System.Configuration.Provider;
using System.Collections;
using System.ComponentModel;
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
public abstract class SettingsBase {
protected SettingsBase()
{
_PropertyValues = new SettingsPropertyValueCollection();
}
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
public virtual object this[string propertyName]
{
get {
if (IsSynchronized) {
lock (this) {
return GetPropertyValueByName(propertyName);
}
} else {
return GetPropertyValueByName(propertyName);
}
}
set {
if (IsSynchronized) {
lock (this) {
SetPropertyValueByName(propertyName, value);
}
} else {
SetPropertyValueByName(propertyName, value);
}
}
}
private object GetPropertyValueByName(string propertyName)
{
if (Properties == null || _PropertyValues == null || Properties.Count == 0)
throw new SettingsPropertyNotFoundException(SR.GetString(SR.SettingsPropertyNotFound, propertyName));
SettingsProperty pp = Properties[propertyName];
if (pp == null)
throw new SettingsPropertyNotFoundException(SR.GetString(SR.SettingsPropertyNotFound, propertyName));
SettingsPropertyValue p = _PropertyValues[propertyName];
if (p == null)
{
GetPropertiesFromProvider(pp.Provider);
p = _PropertyValues[propertyName];
if (p == null)
throw new SettingsPropertyNotFoundException(SR.GetString(SR.SettingsPropertyNotFound, propertyName));
}
return p.PropertyValue;
}
private void SetPropertyValueByName(string propertyName, object propertyValue)
{
if (Properties == null || _PropertyValues == null || Properties.Count == 0)
throw new SettingsPropertyNotFoundException(SR.GetString(SR.SettingsPropertyNotFound, propertyName));
SettingsProperty pp = Properties[propertyName];
if (pp == null)
throw new SettingsPropertyNotFoundException(SR.GetString(SR.SettingsPropertyNotFound, propertyName));
if (pp.IsReadOnly)
throw new SettingsPropertyIsReadOnlyException(SR.GetString(SR.SettingsPropertyReadOnly, propertyName));
if (propertyValue != null && !pp.PropertyType.IsInstanceOfType(propertyValue))
throw new SettingsPropertyWrongTypeException(SR.GetString(SR.SettingsPropertyWrongType, propertyName));
SettingsPropertyValue p = _PropertyValues[propertyName];
if (p == null)
{
GetPropertiesFromProvider(pp.Provider);
p = _PropertyValues[propertyName];
if (p == null)
throw new SettingsPropertyNotFoundException(SR.GetString(SR.SettingsPropertyNotFound, propertyName));
}
p.PropertyValue = propertyValue;
}
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
public void Initialize(
SettingsContext context,
SettingsPropertyCollection properties,
SettingsProviderCollection providers)
{
_Context = context;
_Properties = properties;
_Providers = providers;
}
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
public virtual void Save() {
if (IsSynchronized) {
lock (this) {
SaveCore();
}
} else {
SaveCore();
}
}
private void SaveCore()
{
if (Properties == null || _PropertyValues == null || Properties.Count == 0)
return;
foreach(SettingsProvider prov in Providers) {
SettingsPropertyValueCollection ppcv = new SettingsPropertyValueCollection();
foreach (SettingsPropertyValue pp in PropertyValues)
{
if (pp.Property.Provider == prov) {
ppcv.Add(pp);
}
}
if (ppcv.Count > 0) {
prov.SetPropertyValues(Context, ppcv);
}
}
foreach (SettingsPropertyValue pp in PropertyValues)
pp.IsDirty = false;
}
virtual public SettingsPropertyCollection Properties { get { return _Properties; }}
virtual public SettingsProviderCollection Providers { get { return _Providers; }}
virtual public SettingsPropertyValueCollection PropertyValues { get { return _PropertyValues; } }
virtual public SettingsContext Context { get { return _Context; } }
private void GetPropertiesFromProvider(SettingsProvider provider)
{
SettingsPropertyCollection ppc = new SettingsPropertyCollection();
foreach (SettingsProperty pp in Properties)
{
if (pp.Provider == provider)
{
ppc.Add(pp);
}
}
if (ppc.Count > 0)
{
SettingsPropertyValueCollection ppcv = provider.GetPropertyValues(Context, ppc);
foreach (SettingsPropertyValue p in ppcv)
{
if (_PropertyValues[p.Name] == null)
_PropertyValues.Add(p);
}
}
}
public static SettingsBase Synchronized(SettingsBase settingsBase)
{
settingsBase._IsSynchronized = true;
return settingsBase;
}
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
private SettingsPropertyCollection _Properties = null;
private SettingsProviderCollection _Providers = null;
private SettingsPropertyValueCollection _PropertyValues = null;
private SettingsContext _Context = null;
private bool _IsSynchronized = false;
[Browsable(false)]
public bool IsSynchronized { get { return _IsSynchronized; } }
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Configuration {
using System.Collections.Specialized;
using System.Runtime.Serialization;
using System.Configuration.Provider;
using System.Collections;
using System.ComponentModel;
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
public abstract class SettingsBase {
protected SettingsBase()
{
_PropertyValues = new SettingsPropertyValueCollection();
}
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
public virtual object this[string propertyName]
{
get {
if (IsSynchronized) {
lock (this) {
return GetPropertyValueByName(propertyName);
}
} else {
return GetPropertyValueByName(propertyName);
}
}
set {
if (IsSynchronized) {
lock (this) {
SetPropertyValueByName(propertyName, value);
}
} else {
SetPropertyValueByName(propertyName, value);
}
}
}
private object GetPropertyValueByName(string propertyName)
{
if (Properties == null || _PropertyValues == null || Properties.Count == 0)
throw new SettingsPropertyNotFoundException(SR.GetString(SR.SettingsPropertyNotFound, propertyName));
SettingsProperty pp = Properties[propertyName];
if (pp == null)
throw new SettingsPropertyNotFoundException(SR.GetString(SR.SettingsPropertyNotFound, propertyName));
SettingsPropertyValue p = _PropertyValues[propertyName];
if (p == null)
{
GetPropertiesFromProvider(pp.Provider);
p = _PropertyValues[propertyName];
if (p == null)
throw new SettingsPropertyNotFoundException(SR.GetString(SR.SettingsPropertyNotFound, propertyName));
}
return p.PropertyValue;
}
private void SetPropertyValueByName(string propertyName, object propertyValue)
{
if (Properties == null || _PropertyValues == null || Properties.Count == 0)
throw new SettingsPropertyNotFoundException(SR.GetString(SR.SettingsPropertyNotFound, propertyName));
SettingsProperty pp = Properties[propertyName];
if (pp == null)
throw new SettingsPropertyNotFoundException(SR.GetString(SR.SettingsPropertyNotFound, propertyName));
if (pp.IsReadOnly)
throw new SettingsPropertyIsReadOnlyException(SR.GetString(SR.SettingsPropertyReadOnly, propertyName));
if (propertyValue != null && !pp.PropertyType.IsInstanceOfType(propertyValue))
throw new SettingsPropertyWrongTypeException(SR.GetString(SR.SettingsPropertyWrongType, propertyName));
SettingsPropertyValue p = _PropertyValues[propertyName];
if (p == null)
{
GetPropertiesFromProvider(pp.Provider);
p = _PropertyValues[propertyName];
if (p == null)
throw new SettingsPropertyNotFoundException(SR.GetString(SR.SettingsPropertyNotFound, propertyName));
}
p.PropertyValue = propertyValue;
}
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
public void Initialize(
SettingsContext context,
SettingsPropertyCollection properties,
SettingsProviderCollection providers)
{
_Context = context;
_Properties = properties;
_Providers = providers;
}
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
public virtual void Save() {
if (IsSynchronized) {
lock (this) {
SaveCore();
}
} else {
SaveCore();
}
}
private void SaveCore()
{
if (Properties == null || _PropertyValues == null || Properties.Count == 0)
return;
foreach(SettingsProvider prov in Providers) {
SettingsPropertyValueCollection ppcv = new SettingsPropertyValueCollection();
foreach (SettingsPropertyValue pp in PropertyValues)
{
if (pp.Property.Provider == prov) {
ppcv.Add(pp);
}
}
if (ppcv.Count > 0) {
prov.SetPropertyValues(Context, ppcv);
}
}
foreach (SettingsPropertyValue pp in PropertyValues)
pp.IsDirty = false;
}
virtual public SettingsPropertyCollection Properties { get { return _Properties; }}
virtual public SettingsProviderCollection Providers { get { return _Providers; }}
virtual public SettingsPropertyValueCollection PropertyValues { get { return _PropertyValues; } }
virtual public SettingsContext Context { get { return _Context; } }
private void GetPropertiesFromProvider(SettingsProvider provider)
{
SettingsPropertyCollection ppc = new SettingsPropertyCollection();
foreach (SettingsProperty pp in Properties)
{
if (pp.Provider == provider)
{
ppc.Add(pp);
}
}
if (ppc.Count > 0)
{
SettingsPropertyValueCollection ppcv = provider.GetPropertyValues(Context, ppc);
foreach (SettingsPropertyValue p in ppcv)
{
if (_PropertyValues[p.Name] == null)
_PropertyValues.Add(p);
}
}
}
public static SettingsBase Synchronized(SettingsBase settingsBase)
{
settingsBase._IsSynchronized = true;
return settingsBase;
}
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
private SettingsPropertyCollection _Properties = null;
private SettingsProviderCollection _Providers = null;
private SettingsPropertyValueCollection _PropertyValues = null;
private SettingsContext _Context = null;
private bool _IsSynchronized = false;
[Browsable(false)]
public bool IsSynchronized { get { return _IsSynchronized; } }
}
}
// 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
- LineMetrics.cs
- CalendarSelectionChangedEventArgs.cs
- WindowsHyperlink.cs
- StartFileNameEditor.cs
- PassportAuthentication.cs
- TypeSystem.cs
- XmlSchemaSimpleTypeUnion.cs
- UserControlParser.cs
- Roles.cs
- ApplicationId.cs
- ErrorWebPart.cs
- Int16AnimationBase.cs
- ColumnMapProcessor.cs
- TextBox.cs
- Rijndael.cs
- XamlPointCollectionSerializer.cs
- FrameworkContentElementAutomationPeer.cs
- Geometry.cs
- XPathMessageFilter.cs
- FrameDimension.cs
- WorkflowServiceBehavior.cs
- COM2ExtendedUITypeEditor.cs
- EventItfInfo.cs
- LambdaCompiler.Lambda.cs
- OpenTypeLayout.cs
- ItemsPanelTemplate.cs
- AnimationClockResource.cs
- PageThemeCodeDomTreeGenerator.cs
- BitmapFrameDecode.cs
- SymbolType.cs
- Int32KeyFrameCollection.cs
- TokenFactoryFactory.cs
- DiagnosticsConfigurationHandler.cs
- DataRowExtensions.cs
- TabOrder.cs
- XmlCharCheckingWriter.cs
- ProcessStartInfo.cs
- arabicshape.cs
- HierarchicalDataBoundControl.cs
- RecordConverter.cs
- NullExtension.cs
- HttpProfileGroupBase.cs
- Solver.cs
- ContentIterators.cs
- TextViewBase.cs
- EntitySetDataBindingList.cs
- AutomationElementCollection.cs
- ParserHooks.cs
- StringFormat.cs
- InstalledFontCollection.cs
- XPathItem.cs
- MonitoringDescriptionAttribute.cs
- Button.cs
- EntityDataSourceViewSchema.cs
- SortAction.cs
- Authorization.cs
- DomNameTable.cs
- DataGridBoolColumn.cs
- SafePointer.cs
- RealizationContext.cs
- XmlCharCheckingReader.cs
- SqlDataSource.cs
- HttpClientProtocol.cs
- BuilderInfo.cs
- SharedStatics.cs
- PassportAuthenticationEventArgs.cs
- ApplyImportsAction.cs
- XmlSiteMapProvider.cs
- Nullable.cs
- PasswordPropertyTextAttribute.cs
- codemethodreferenceexpression.cs
- ServiceCredentialsElement.cs
- WorkflowItemPresenter.cs
- WebPartConnection.cs
- DataTableTypeConverter.cs
- WebPartDisplayModeEventArgs.cs
- TextTreeTextElementNode.cs
- SingleConverter.cs
- DateTimeValueSerializer.cs
- StackOverflowException.cs
- Empty.cs
- Nodes.cs
- StorageBasedPackageProperties.cs
- ServicePointManager.cs
- SqlDataAdapter.cs
- BindStream.cs
- CookielessData.cs
- KeyPullup.cs
- DataBoundControlAdapter.cs
- WebPartTransformerCollection.cs
- DataBoundControlHelper.cs
- DataGridViewCellConverter.cs
- ChooseAction.cs
- OracleDataAdapter.cs
- IntegerCollectionEditor.cs
- HwndSubclass.cs
- ComAdminInterfaces.cs
- ZipIOExtraField.cs
- SerializationHelper.cs
- CalendarButtonAutomationPeer.cs