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
- WhitespaceRule.cs
- QilList.cs
- WebExceptionStatus.cs
- TextServicesCompartmentContext.cs
- CodeParameterDeclarationExpression.cs
- WpfXamlType.cs
- ExtentKey.cs
- DispatcherEventArgs.cs
- PeerInvitationResponse.cs
- XamlSerializationHelper.cs
- SchemaImporterExtensionElement.cs
- ToolStripSeparator.cs
- HuffmanTree.cs
- DataKey.cs
- RegistryPermission.cs
- FileSystemWatcher.cs
- ArgumentNullException.cs
- DependencyProperty.cs
- SectionXmlInfo.cs
- ColorConvertedBitmap.cs
- Content.cs
- URLString.cs
- EventNotify.cs
- CodeDelegateCreateExpression.cs
- ObjectListCommandCollection.cs
- RouteData.cs
- FontFaceLayoutInfo.cs
- MembershipAdapter.cs
- DeferredSelectedIndexReference.cs
- DataServiceQueryProvider.cs
- OracleFactory.cs
- ZoomPercentageConverter.cs
- ReadOnlyPropertyMetadata.cs
- HashStream.cs
- ColorPalette.cs
- CompositeKey.cs
- SynchronizedRandom.cs
- WebProxyScriptElement.cs
- DSASignatureDeformatter.cs
- TextWriter.cs
- Rectangle.cs
- ArgumentNullException.cs
- PropertyStore.cs
- TypeToTreeConverter.cs
- XsdDateTime.cs
- DataServiceQuery.cs
- NamedObject.cs
- PathFigureCollectionConverter.cs
- StringUtil.cs
- ByteFacetDescriptionElement.cs
- LeaseManager.cs
- JsonDeserializer.cs
- DataColumnMappingCollection.cs
- PolicyException.cs
- StorageInfo.cs
- ICspAsymmetricAlgorithm.cs
- SpecialNameAttribute.cs
- TrackingMemoryStreamFactory.cs
- NativeObjectSecurity.cs
- CollectionContainer.cs
- FromReply.cs
- ValueChangedEventManager.cs
- X500Name.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- AsyncResult.cs
- embossbitmapeffect.cs
- MethodBuilder.cs
- StoryFragments.cs
- GroupBox.cs
- JsonWriter.cs
- DataRelationCollection.cs
- RowTypeElement.cs
- StylusEventArgs.cs
- EntityDataSourceChangingEventArgs.cs
- Int32AnimationBase.cs
- KeyedQueue.cs
- DataGridViewCellPaintingEventArgs.cs
- StreamAsIStream.cs
- CuspData.cs
- SchemaImporter.cs
- WebPartsPersonalization.cs
- SchemaElement.cs
- Classification.cs
- DesignerTextBoxAdapter.cs
- WebPartMovingEventArgs.cs
- RtfToken.cs
- AsnEncodedData.cs
- SaveFileDialogDesigner.cs
- MemberInfoSerializationHolder.cs
- WaveHeader.cs
- XmlChildEnumerator.cs
- FormatterConverter.cs
- ProcessThread.cs
- ListSortDescriptionCollection.cs
- StylusButtonEventArgs.cs
- InternalBase.cs
- XmlSerializerSection.cs
- DataGridRelationshipRow.cs
- TransformProviderWrapper.cs
- ContractListAdapter.cs