Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / CompMod / System / Diagnostics / SourceElementsCollection.cs / 1 / SourceElementsCollection.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System.Configuration; using System.Collections; using System.Collections.Specialized; using System.Xml; namespace System.Diagnostics { [ConfigurationCollection(typeof(SourceElement), AddItemName = "source", CollectionType = ConfigurationElementCollectionType.BasicMap)] internal class SourceElementsCollection : ConfigurationElementCollection { new public SourceElement this[string name] { get { return (SourceElement) BaseGet(name); } } protected override string ElementName { get { return "source"; } } public override ConfigurationElementCollectionType CollectionType { get { return ConfigurationElementCollectionType.BasicMap; } } protected override ConfigurationElement CreateNewElement() { SourceElement se = new SourceElement(); se.Listeners.InitializeDefaultInternal(); return se; } protected override Object GetElementKey(ConfigurationElement element) { return ((SourceElement) element).Name; } } internal class SourceElement : ConfigurationElement { private static readonly ConfigurationPropertyCollection _properties; private static readonly ConfigurationProperty _propName = new ConfigurationProperty("name", typeof(string), "", ConfigurationPropertyOptions.IsRequired); private static readonly ConfigurationProperty _propSwitchName = new ConfigurationProperty("switchName", typeof(string), null, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propSwitchValue = new ConfigurationProperty("switchValue", typeof(string), null, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propSwitchType = new ConfigurationProperty("switchType", typeof(string), null, ConfigurationPropertyOptions.None); private static readonly ConfigurationProperty _propListeners = new ConfigurationProperty("listeners", typeof(ListenerElementsCollection), new ListenerElementsCollection(), ConfigurationPropertyOptions.None); private Hashtable _attributes; static SourceElement() { _properties = new ConfigurationPropertyCollection(); _properties.Add(_propName); _properties.Add(_propSwitchName); _properties.Add(_propSwitchValue); _properties.Add(_propSwitchType); _properties.Add(_propListeners); } public Hashtable Attributes { get { if (_attributes == null) _attributes = new Hashtable(StringComparer.OrdinalIgnoreCase); return _attributes; } } [ConfigurationProperty("listeners")] public ListenerElementsCollection Listeners { get { return (ListenerElementsCollection) this[_propListeners]; } } [ConfigurationProperty("name", IsRequired=true, DefaultValue="")] public string Name { get { return (string) this[_propName]; } } protected override ConfigurationPropertyCollection Properties { get { return _properties; } } [ConfigurationProperty("switchName")] public string SwitchName { get { return (string) this[_propSwitchName]; } } [ConfigurationProperty("switchValue")] public string SwitchValue { get { return (string) this[_propSwitchValue]; } } [ConfigurationProperty("switchType")] public string SwitchType { get { return (string) this[_propSwitchType]; } } protected override void DeserializeElement(XmlReader reader, bool serializeCollectionKey) { base.DeserializeElement(reader, serializeCollectionKey); if (!String.IsNullOrEmpty(SwitchName) && !String.IsNullOrEmpty(SwitchValue)) throw new ConfigurationErrorsException(SR.GetString(SR.Only_specify_one, Name)); } protected override bool OnDeserializeUnrecognizedAttribute(String name, String value) { ConfigurationProperty _propDynamic = new ConfigurationProperty(name, typeof(string), value); _properties.Add(_propDynamic); base[_propDynamic] = value; // Add them to the property bag Attributes.Add(name, value); return true; } internal void ResetProperties() { // blow away any UnrecognizedAttributes that we have deserialized earlier if (_attributes != null) { _attributes.Clear(); _properties.Clear(); _properties.Add(_propName); _properties.Add(_propSwitchName); _properties.Add(_propSwitchValue); _properties.Add(_propSwitchType); _properties.Add(_propListeners); } } } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DefaultBinder.cs
- recordstatefactory.cs
- GPStream.cs
- RunInstallerAttribute.cs
- CellTreeNodeVisitors.cs
- RTLAwareMessageBox.cs
- FileChangesMonitor.cs
- CompositeCollectionView.cs
- WorkerRequest.cs
- TdsValueSetter.cs
- VariableQuery.cs
- GenericEnumConverter.cs
- QuaternionAnimationUsingKeyFrames.cs
- XmlLoader.cs
- PolicyChain.cs
- ProgressBarRenderer.cs
- CharEnumerator.cs
- CommonRemoteMemoryBlock.cs
- AnnotationHelper.cs
- CompilationUtil.cs
- ObjectQueryState.cs
- KeyValueConfigurationCollection.cs
- WebServiceHandler.cs
- DesignerAttribute.cs
- ToolboxComponentsCreatingEventArgs.cs
- SchemaReference.cs
- ChangeInterceptorAttribute.cs
- HebrewNumber.cs
- BookmarkTable.cs
- ProfileElement.cs
- SqlRetyper.cs
- EdmRelationshipRoleAttribute.cs
- XmlnsCompatibleWithAttribute.cs
- RepeaterItem.cs
- RefreshEventArgs.cs
- ExcludePathInfo.cs
- PreDigestedSignedInfo.cs
- hresults.cs
- ParameterRetriever.cs
- FileStream.cs
- StrongNameMembershipCondition.cs
- ContractNamespaceAttribute.cs
- Debugger.cs
- ApplicationException.cs
- BindingExpressionBase.cs
- PeerNameRecordCollection.cs
- FileDialogPermission.cs
- XsdBuilder.cs
- ListBox.cs
- FixedSchema.cs
- GraphicsPath.cs
- WindowsStartMenu.cs
- JsonReaderWriterFactory.cs
- TreeNodeCollectionEditorDialog.cs
- XPathConvert.cs
- ImageMetadata.cs
- JoinElimination.cs
- Utils.cs
- ConnectionStringsExpressionBuilder.cs
- HtmlInputControl.cs
- ButtonBaseAutomationPeer.cs
- AssemblyNameProxy.cs
- HtmlInputReset.cs
- DesignerAutoFormatStyle.cs
- EncryptedPackage.cs
- ItemList.cs
- RotateTransform3D.cs
- XmlSerializerFactory.cs
- CustomAttribute.cs
- TextEditorContextMenu.cs
- DataGridViewRowsAddedEventArgs.cs
- WsiProfilesElement.cs
- SafePEFileHandle.cs
- InputBinder.cs
- AttributeEmitter.cs
- SqlParameterCollection.cs
- DocumentReferenceCollection.cs
- CLRBindingWorker.cs
- RulePatternOps.cs
- AsyncPostBackTrigger.cs
- ChineseLunisolarCalendar.cs
- WSSecurityXXX2005.cs
- NativeMethodsOther.cs
- Regex.cs
- Tuple.cs
- OledbConnectionStringbuilder.cs
- SQLDouble.cs
- VisualBrush.cs
- RadioButtonList.cs
- StrokeFIndices.cs
- MaskedTextBoxDesignerActionList.cs
- InputScopeAttribute.cs
- ItemType.cs
- SuppressMessageAttribute.cs
- Point3DKeyFrameCollection.cs
- DataServiceKeyAttribute.cs
- ITextView.cs
- SpecialFolderEnumConverter.cs
- HostingPreferredMapPath.cs
- CompilerGlobalScopeAttribute.cs