Пример #1
0
 internal TraceSourceInfo(string name, SourceLevels levels, TraceImplSettings settings)
 {
     this.name      = name;
     this.levels    = levels;
     this.listeners = new TraceListenerCollection(false);
     this.listeners.Add(new DefaultTraceListener(), settings);
 }
		public virtual object Create (object parent, object configContext, XElement section)
			{
			IDictionary d;
			if (parent == null)
				d = new Hashtable (CaseInsensitiveHashCodeProvider.Default, CaseInsensitiveComparer.Default);
			else
				d = (IDictionary)((ICloneable)parent).Clone ();

			if (d.Contains (TraceImplSettings.Key))
				configValues = (TraceImplSettings)d[TraceImplSettings.Key];
			else
				d.Add (TraceImplSettings.Key, configValues = new TraceImplSettings ());

			// process <sharedListeners> first
			foreach (XElement child in section.Elements ())
				{
				switch (child.NodeType)
					{
					case XmlNodeType.Element:
						if (child.Name != "sharedListeners")
							continue;
						AddTraceListeners (d, child, GetSharedListeners (d));
						break;
					}
				}

			foreach (XElement child in section.Elements ())
				{
				XmlNodeType type = child.NodeType;

				switch (type)
					{
					/* ignore */
					case XmlNodeType.Whitespace:
					case XmlNodeType.Comment:
						continue;
					case XmlNodeType.Element:
						if (child.Name == "sharedListeners")
							continue;
						ElementHandler eh = (ElementHandler)elementHandlers[child.Name];
						if (eh != null)
							eh (d, child);
						else
							ThrowUnrecognizedElement (child);
						break;
					default:
						ThrowUnrecognizedElement (child);
						break;
					}
				}

			return d;
			}
        public virtual object Create(object parent, object configContext, XElement section)
        {
            IDictionary d;

            if (parent == null)
            {
                d = new Hashtable(CaseInsensitiveHashCodeProvider.Default, CaseInsensitiveComparer.Default);
            }
            else
            {
                d = (IDictionary)((ICloneable)parent).Clone();
            }

            if (d.Contains(TraceImplSettings.Key))
            {
                configValues = (TraceImplSettings)d[TraceImplSettings.Key];
            }
            else
            {
                d.Add(TraceImplSettings.Key, configValues = new TraceImplSettings());
            }

            // process <sharedListeners> first
            foreach (XElement child in section.Elements())
            {
                switch (child.NodeType)
                {
                case XmlNodeType.Element:
                    if (child.Name != "sharedListeners")
                    {
                        continue;
                    }
                    AddTraceListeners(d, child, GetSharedListeners(d));
                    break;
                }
            }

            foreach (XElement child in section.Elements())
            {
                XmlNodeType type = child.NodeType;

                switch (type)
                {
                /* ignore */
                case XmlNodeType.Whitespace:
                case XmlNodeType.Comment:
                    continue;

                case XmlNodeType.Element:
                    if (child.Name == "sharedListeners")
                    {
                        continue;
                    }
                    ElementHandler eh = (ElementHandler)elementHandlers[child.Name];
                    if (eh != null)
                    {
                        eh(d, child);
                    }
                    else
                    {
                        ThrowUnrecognizedElement(child);
                    }
                    break;

                default:
                    ThrowUnrecognizedElement(child);
                    break;
                }
            }

            return(d);
        }