Code:
/ DotNET / DotNET / 8.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
- EventSetter.cs
- Misc.cs
- GotoExpression.cs
- RootProfilePropertySettingsCollection.cs
- FileRecordSequenceHelper.cs
- ellipse.cs
- StreamGeometry.cs
- FontInfo.cs
- XsltLoader.cs
- WebBrowsableAttribute.cs
- DispatchChannelSink.cs
- ValueConversionAttribute.cs
- FormsAuthenticationConfiguration.cs
- KeyFrames.cs
- VideoDrawing.cs
- TimeSpanConverter.cs
- Rect3D.cs
- ReadingWritingEntityEventArgs.cs
- InternalConfigRoot.cs
- BuilderPropertyEntry.cs
- DebugTrace.cs
- SignerInfo.cs
- TextAutomationPeer.cs
- securitycriticaldataClass.cs
- ForwardPositionQuery.cs
- ContactManager.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- xmlglyphRunInfo.cs
- DmlSqlGenerator.cs
- WebConfigurationManager.cs
- Camera.cs
- Comparer.cs
- DispatcherSynchronizationContext.cs
- KeyInfo.cs
- SharingService.cs
- DrawingDrawingContext.cs
- CmsInterop.cs
- ControlAdapter.cs
- XsdDateTime.cs
- NonParentingControl.cs
- ItemDragEvent.cs
- WmlCommandAdapter.cs
- DataGridAddNewRow.cs
- ColorConverter.cs
- ObjectKeyFrameCollection.cs
- Matrix3DConverter.cs
- DocumentXmlWriter.cs
- WeakReferenceList.cs
- DefaultValueMapping.cs
- sqlcontext.cs
- categoryentry.cs
- KeyBinding.cs
- WindowsListViewGroupHelper.cs
- ObfuscateAssemblyAttribute.cs
- XslTransform.cs
- Adorner.cs
- DataServiceProcessingPipelineEventArgs.cs
- ConfigXmlWhitespace.cs
- MediaElementAutomationPeer.cs
- PtsCache.cs
- ObjectHandle.cs
- DataGridSortCommandEventArgs.cs
- Decimal.cs
- EmbeddedMailObjectsCollection.cs
- ComponentManagerBroker.cs
- DisplayToken.cs
- columnmapfactory.cs
- RegexCode.cs
- VectorValueSerializer.cs
- MissingMethodException.cs
- ChoiceConverter.cs
- XmlElementCollection.cs
- DesignerAutoFormatCollection.cs
- HelpHtmlBuilder.cs
- PackagePartCollection.cs
- PageFunction.cs
- ScriptMethodAttribute.cs
- ErrorFormatterPage.cs
- CodeSubDirectoriesCollection.cs
- LayoutTable.cs
- NestPullup.cs
- XmlReflectionMember.cs
- MouseWheelEventArgs.cs
- ToolStripProgressBar.cs
- InvalidPropValue.cs
- ProfileManager.cs
- WindowsEditBoxRange.cs
- DecimalFormatter.cs
- SoapTypeAttribute.cs
- ValidationSummary.cs
- SubMenuStyleCollection.cs
- ManifestSignedXml.cs
- SqlBulkCopy.cs
- Bold.cs
- VideoDrawing.cs
- SchemaEntity.cs
- RadioButtonList.cs
- log.cs
- ReadOnlyDataSource.cs
- Span.cs