We need you! We're working hard on the next version of Developer Fusion -
Let us know what you think we should be up to!
- 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
- {
-
- public new 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;
-
- Attributes.Add(name, value);
- return true;
- }
-
- internal void ResetProperties()
- {
-
- if (_attributes != null) {
- _attributes.Clear();
- _properties.Clear();
- _properties.Add(_propName);
- _properties.Add(_propSwitchName);
- _properties.Add(_propSwitchValue);
- _properties.Add(_propSwitchType);
- _properties.Add(_propListeners);
- }
- }
- }
-
- }