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
- columnmapfactory.cs
- MethodBuilderInstantiation.cs
- _AcceptOverlappedAsyncResult.cs
- ControlPersister.cs
- Visitor.cs
- CodeGenerator.cs
- OleDbConnectionInternal.cs
- GroupByExpressionRewriter.cs
- ItemDragEvent.cs
- AcceleratedTokenAuthenticator.cs
- CryptoApi.cs
- validation.cs
- _SSPIWrapper.cs
- BitmapEffect.cs
- EventHandlersStore.cs
- JumpTask.cs
- DependencyPropertyDescriptor.cs
- ConditionalAttribute.cs
- HasCopySemanticsAttribute.cs
- ExpressionBuilderContext.cs
- ProviderCollection.cs
- TableLayoutPanelCellPosition.cs
- WebPartChrome.cs
- MexBindingElement.cs
- RayHitTestParameters.cs
- FrameworkElementFactory.cs
- DockAndAnchorLayout.cs
- TableFieldsEditor.cs
- CmsInterop.cs
- rsa.cs
- FacetValues.cs
- Menu.cs
- initElementDictionary.cs
- StringResourceManager.cs
- WinFormsComponentEditor.cs
- FrameAutomationPeer.cs
- ThousandthOfEmRealPoints.cs
- MarkupCompiler.cs
- ZipIOModeEnforcingStream.cs
- XPathDocumentNavigator.cs
- TypeExtension.cs
- SymbolDocumentInfo.cs
- SafeArrayRankMismatchException.cs
- MethodExpr.cs
- CharacterBufferReference.cs
- ResourcePermissionBaseEntry.cs
- InternalResources.cs
- SqlTransaction.cs
- ConfigUtil.cs
- EntityContainerRelationshipSetEnd.cs
- VisualBrush.cs
- EntityDataSourceView.cs
- WindowsFormsLinkLabel.cs
- StrongNameUtility.cs
- EntityDataSourceEntityTypeFilterItem.cs
- AssociationEndMember.cs
- VariantWrapper.cs
- EntityContainer.cs
- MultiView.cs
- TextWriterTraceListener.cs
- PreProcessInputEventArgs.cs
- WebPartDisplayModeCancelEventArgs.cs
- ViewGenResults.cs
- StructuralCache.cs
- PropertyGridEditorPart.cs
- SafeSecurityHandles.cs
- PathParser.cs
- BooleanFunctions.cs
- StrokeCollection.cs
- KnownTypes.cs
- Size3DConverter.cs
- DataRowView.cs
- SortDescription.cs
- AttributeEmitter.cs
- GenericAuthenticationEventArgs.cs
- DataBindingHandlerAttribute.cs
- METAHEADER.cs
- DataGridToolTip.cs
- DeviceSpecificChoiceCollection.cs
- DynamicControlParameter.cs
- ServiceContractViewControl.Designer.cs
- TrustLevel.cs
- QueryGenerator.cs
- StorageMappingItemLoader.cs
- OdbcCommandBuilder.cs
- ExplicitDiscriminatorMap.cs
- ExchangeUtilities.cs
- ParserContext.cs
- PassportPrincipal.cs
- controlskin.cs
- WindowsFont.cs
- VisualStyleInformation.cs
- RsaEndpointIdentity.cs
- SpecialNameAttribute.cs
- LicenseManager.cs
- CommandField.cs
- ItemMap.cs
- WebSysDisplayNameAttribute.cs
- FormClosingEvent.cs
- HitTestParameters3D.cs