Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Sys / System / Configuration / Sections / ClientSettingsSection.cs / 1 / ClientSettingsSection.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;
///
/// ConfigurationSection class for sections that store client settings.
///
public sealed class ClientSettingsSection : ConfigurationSection
{
private static ConfigurationPropertyCollection _properties;
private static readonly ConfigurationProperty _propSettings = new ConfigurationProperty(null, typeof(SettingElementCollection), null, ConfigurationPropertyOptions.IsDefaultCollection);
static ClientSettingsSection () {
_properties = new ConfigurationPropertyCollection();
_properties.Add(_propSettings);
}
public ClientSettingsSection () {
}
protected override ConfigurationPropertyCollection Properties {
get {
return _properties;
}
}
///
[ConfigurationProperty("", IsDefaultCollection = true)]
public SettingElementCollection Settings {
get {
return (SettingElementCollection) base[_propSettings];
}
}
}
public sealed class SettingElementCollection : ConfigurationElementCollection {
public override ConfigurationElementCollectionType CollectionType {
get {
return ConfigurationElementCollectionType.BasicMap;
}
}
protected override string ElementName {
get {
return "setting";
}
}
protected override ConfigurationElement CreateNewElement() {
return new SettingElement();
}
protected override object GetElementKey(ConfigurationElement element) {
return ((SettingElement)element).Key;
}
public SettingElement Get(string elementKey) {
return (SettingElement) BaseGet(elementKey);
}
public void Add(SettingElement element) {
BaseAdd(element);
}
public void Remove(SettingElement element) {
BaseRemove(GetElementKey(element));
}
public void Clear() {
BaseClear();
}
}
public sealed class SettingElement : ConfigurationElement {
private static ConfigurationPropertyCollection _properties;
private static readonly ConfigurationProperty _propName = new ConfigurationProperty("name", typeof(string),"",ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey);
private static readonly ConfigurationProperty _propSerializeAs = new ConfigurationProperty("serializeAs", typeof(SettingsSerializeAs),SettingsSerializeAs.String,ConfigurationPropertyOptions.IsRequired);
private static readonly ConfigurationProperty _propValue = new ConfigurationProperty("value", typeof(SettingValueElement),null,ConfigurationPropertyOptions.IsRequired);
private static XmlDocument doc = new XmlDocument();
static SettingElement() {
// Property initialization
_properties = new ConfigurationPropertyCollection();
_properties.Add(_propName);
_properties.Add(_propSerializeAs);
_properties.Add(_propValue);
}
public SettingElement() {
}
public SettingElement(String name, SettingsSerializeAs serializeAs) : this() {
Name = name;
SerializeAs = serializeAs;
}
internal string Key {
get {
return Name;
}
}
public override bool Equals(object settings) {
SettingElement u = settings as SettingElement;
return (u != null && base.Equals(settings) && Object.Equals(u.Value, Value));
}
public override int GetHashCode() {
return base.GetHashCode() ^ Value.GetHashCode();
}
protected override ConfigurationPropertyCollection Properties {
get {
return _properties;
}
}
[ConfigurationProperty("name", IsRequired = true, IsKey = true, DefaultValue = "")]
public string Name {
get {
return (string)base[_propName];
}
set {
base[_propName] = value;
}
}
[ConfigurationProperty("serializeAs", IsRequired = true, DefaultValue = SettingsSerializeAs.String)]
public SettingsSerializeAs SerializeAs {
get {
return (SettingsSerializeAs) base[_propSerializeAs];
}
set {
base[_propSerializeAs] = value;
}
}
[ConfigurationProperty("value", IsRequired = true, DefaultValue = null)]
public SettingValueElement Value {
get {
return (SettingValueElement) base[_propValue];
}
set {
base[_propValue] = value;
}
}
}
public sealed class SettingValueElement : ConfigurationElement {
private static ConfigurationPropertyCollection _properties;
private static XmlDocument doc = new XmlDocument();
private XmlNode _valueXml;
private bool isModified = false;
protected override ConfigurationPropertyCollection Properties {
get {
if (_properties == null) {
_properties = new ConfigurationPropertyCollection();
}
return _properties;
}
}
public XmlNode ValueXml {
get {
return _valueXml;
}
set {
_valueXml = value;
isModified = true;
}
}
protected override void DeserializeElement(XmlReader reader, bool serializeCollectionKey)
{
ValueXml = doc.ReadNode(reader);
}
public override bool Equals(object settingValue) {
SettingValueElement u = settingValue as SettingValueElement;
return (u != null && Object.Equals(u.ValueXml, ValueXml));
}
public override int GetHashCode() {
return ValueXml.GetHashCode();
}
protected override bool IsModified() {
return isModified;
}
protected override void ResetModified() {
isModified = false;
}
protected override bool SerializeToXmlElement(XmlWriter writer, string elementName) {
if (ValueXml != null) {
if (writer != null) {
ValueXml.WriteTo(writer);
}
return true;
}
return false;
}
protected override void Reset(ConfigurationElement parentElement) {
base.Reset(parentElement);
ValueXml = ((SettingValueElement) parentElement).ValueXml;
}
protected override void Unmerge(ConfigurationElement sourceElement, ConfigurationElement parentElement,
ConfigurationSaveMode saveMode) {
base.Unmerge(sourceElement, parentElement, saveMode);
ValueXml = ((SettingValueElement) sourceElement).ValueXml;
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- AxisAngleRotation3D.cs
- MessageBox.cs
- QilScopedVisitor.cs
- XmlCodeExporter.cs
- TempFiles.cs
- CodeMethodReturnStatement.cs
- ActionFrame.cs
- RelatedCurrencyManager.cs
- InternalResources.cs
- ThreadStaticAttribute.cs
- Exceptions.cs
- NavigationFailedEventArgs.cs
- StringUtil.cs
- ObjectDisposedException.cs
- RadioButton.cs
- DiscoveryMessageSequence11.cs
- ImpersonateTokenRef.cs
- Version.cs
- Separator.cs
- BoundsDrawingContextWalker.cs
- SystemInformation.cs
- GridSplitter.cs
- WindowsButton.cs
- WindowAutomationPeer.cs
- TextTabProperties.cs
- PrivateFontCollection.cs
- ComponentDispatcherThread.cs
- ComponentResourceManager.cs
- WindowsToolbarAsMenu.cs
- FontSource.cs
- BuildTopDownAttribute.cs
- ImageConverter.cs
- DesignOnlyAttribute.cs
- CalendarAutoFormat.cs
- InternalRelationshipCollection.cs
- SpellerHighlightLayer.cs
- ProxyWebPartConnectionCollection.cs
- StyleSheet.cs
- Point4DValueSerializer.cs
- WindowsIPAddress.cs
- PropertyExpression.cs
- WindowsListViewGroup.cs
- HybridWebProxyFinder.cs
- Timer.cs
- RegexCompiler.cs
- Accessible.cs
- GACMembershipCondition.cs
- WebScriptEnablingBehavior.cs
- CmsUtils.cs
- TableDetailsCollection.cs
- SQLInt64Storage.cs
- ThaiBuddhistCalendar.cs
- SiteMapNodeItemEventArgs.cs
- OrderingExpression.cs
- RuntimeHandles.cs
- WebPartConnectionsConfigureVerb.cs
- VolatileEnlistmentMultiplexing.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- XPathExpr.cs
- PrePostDescendentsWalker.cs
- XPathNavigator.cs
- EmissiveMaterial.cs
- MetaTable.cs
- Rectangle.cs
- RuleConditionDialog.Designer.cs
- TextTreeTextNode.cs
- TrackBarRenderer.cs
- RawStylusInputCustomData.cs
- DrawingContextWalker.cs
- ScrollableControl.cs
- VersionUtil.cs
- ExpressionLink.cs
- CodeCatchClause.cs
- HttpResponse.cs
- HMACMD5.cs
- EventPrivateKey.cs
- LostFocusEventManager.cs
- KeyTime.cs
- SizeF.cs
- XmlAnyElementAttribute.cs
- TransformerConfigurationWizardBase.cs
- ZipPackage.cs
- Group.cs
- ValidatorCompatibilityHelper.cs
- sitestring.cs
- XmlCodeExporter.cs
- DesignerInterfaces.cs
- SettingsPropertyCollection.cs
- FakeModelPropertyImpl.cs
- TimeoutValidationAttribute.cs
- StringDictionaryWithComparer.cs
- XPathDocument.cs
- DocumentGridContextMenu.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- NextPreviousPagerField.cs
- GenericNameHandler.cs
- DesignBindingEditor.cs
- InternalUserCancelledException.cs
- SiteMapNodeItemEventArgs.cs
- DataServiceHostWrapper.cs