Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- PaperSize.cs
- TabItem.cs
- XmlEntity.cs
- DisplayNameAttribute.cs
- LogRecordSequence.cs
- wgx_exports.cs
- BasicHttpSecurityMode.cs
- CorrelationValidator.cs
- XPathNodeInfoAtom.cs
- DetailsViewRow.cs
- HotCommands.cs
- DataColumnMapping.cs
- KeyedHashAlgorithm.cs
- FilterableAttribute.cs
- CheckBox.cs
- PingOptions.cs
- SqlDataSourceEnumerator.cs
- PropertyEntry.cs
- SafeRightsManagementHandle.cs
- CodePropertyReferenceExpression.cs
- DataBindingList.cs
- _SecureChannel.cs
- SchemaElementDecl.cs
- HttpCapabilitiesSectionHandler.cs
- CodeExpressionStatement.cs
- DynamicFilterExpression.cs
- CommandDesigner.cs
- InlineObject.cs
- TableLayoutPanelCellPosition.cs
- VisualTarget.cs
- MergeFailedEvent.cs
- SoapExtensionImporter.cs
- SerializationHelper.cs
- StatusBar.cs
- ButtonChrome.cs
- LineServices.cs
- GridViewDeletedEventArgs.cs
- CodeNamespaceImportCollection.cs
- SelectionProcessor.cs
- LoginUtil.cs
- TextDecoration.cs
- BoundColumn.cs
- ServicePoint.cs
- GetRecipientRequest.cs
- ImportCatalogPart.cs
- ReservationCollection.cs
- ListBindingConverter.cs
- DoubleLink.cs
- SemanticTag.cs
- Utils.cs
- PageThemeParser.cs
- DiscoveryEndpoint.cs
- XmlSchemas.cs
- LookupNode.cs
- PropertyChangingEventArgs.cs
- XmlSchemaAppInfo.cs
- ListViewGroupCollectionEditor.cs
- TextEditorTyping.cs
- CqlBlock.cs
- GridViewEditEventArgs.cs
- KeyToListMap.cs
- VirtualPath.cs
- SystemTcpStatistics.cs
- DbTransaction.cs
- FormViewCommandEventArgs.cs
- EventLogPermissionEntry.cs
- EncryptedKey.cs
- SvcMapFileSerializer.cs
- followingsibling.cs
- SettingsPropertyWrongTypeException.cs
- MenuStrip.cs
- VerificationAttribute.cs
- StrokeCollection2.cs
- BrowserCapabilitiesFactoryBase.cs
- SocketException.cs
- EventsTab.cs
- MimeMultiPart.cs
- NodeLabelEditEvent.cs
- TraceSource.cs
- SHA1.cs
- RequiredFieldValidator.cs
- CodeTypeReferenceExpression.cs
- GridItemCollection.cs
- Win32MouseDevice.cs
- UnsafeNativeMethods.cs
- GridViewColumnCollection.cs
- Stylesheet.cs
- DynamicMetaObject.cs
- ArrayList.cs
- ResourceExpressionBuilder.cs
- ProfileInfo.cs
- DataSvcMapFileSerializer.cs
- DataControlFieldCollection.cs
- SoundPlayer.cs
- SynchronizationContext.cs
- BrowserDefinition.cs
- QuaternionValueSerializer.cs
- AttachInfo.cs
- DecimalFormatter.cs
- ServiceControllerDesigner.cs