2 // System.Diagnostics.TraceListenerCollection.cs
5 // Jonathan Pryor (jonpryor@vt.edu)
7 // Comments from John R. Hicks <angryjohn69@nc.rr.com> original implementation
8 // can be found at: /mcs/docs/apidocs/xml/en/System.Diagnostics
10 // (C) 2002 Jonathan Pryor
15 using System.Collections;
16 using System.Diagnostics;
17 using System.Globalization;
19 namespace System.Diagnostics {
21 public class TraceListenerCollection : IList, ICollection, IEnumerable {
23 private ArrayList listeners = new ArrayList ();
25 internal TraceListenerCollection ()
27 Add (new DefaultTraceListener ());
31 get {return listeners.Count;}
34 public TraceListener this [string name] {
36 foreach (TraceListener listener in listeners) {
37 if (listener.Name == name)
44 public TraceListener this [int index] {
45 get {return (TraceListener) listeners[index];}
46 set {listeners[index] = value;}
49 object IList.this [int index] {
50 get {return listeners[index];}
51 set {((IList)this).Insert (index, value);}
54 bool ICollection.IsSynchronized {
55 get {return listeners.IsSynchronized;}
58 object ICollection.SyncRoot {
59 get {return listeners.SyncRoot;}
62 bool IList.IsFixedSize {
63 get {return listeners.IsFixedSize;}
66 bool IList.IsReadOnly {
67 get {return listeners.IsReadOnly;}
70 public int Add (TraceListener listener)
72 return listeners.Add (listener);
75 public void AddRange (TraceListener[] value)
77 listeners.AddRange (value);
80 public void AddRange (TraceListenerCollection value)
82 listeners.AddRange (value.listeners);
90 public bool Contains (TraceListener listener)
92 return listeners.Contains (listener);
95 public void CopyTo (TraceListener[] listeners, int index)
97 listeners.CopyTo (listeners, index);
100 public IEnumerator GetEnumerator ()
102 return listeners.GetEnumerator ();
105 void ICollection.CopyTo (Array array, int index)
107 listeners.CopyTo (array, index);
110 int IList.Add (object value)
112 if (value is TraceListener)
113 return listeners.Add (value);
114 throw new NotSupportedException (Locale.GetText (
115 "You can only add TraceListener objects to the collection"));
118 bool IList.Contains (object value)
120 if (value is TraceListener)
121 return listeners.Contains (value);
125 int IList.IndexOf (object value)
127 if (value is TraceListener)
128 return listeners.IndexOf (value);
132 void IList.Insert (int index, object value)
134 if (value is TraceListener) {
135 listeners.Insert (index, value);
138 throw new NotSupportedException (Locale.GetText (
139 "You can only insert TraceListener objects into the collection"));
142 void IList.Remove (object value)
144 if (value is TraceListener)
145 listeners.Remove (value);
148 public int IndexOf (TraceListener listener)
150 return listeners.IndexOf (listener);
153 public void Insert (int index, TraceListener listener)
155 listeners.Insert (index, listener);
158 public void Remove (string name)
160 TraceListener found = null;
162 foreach (TraceListener listener in listeners) {
163 if (listener.Name == name) {
170 listeners.Remove (found);
172 throw new ArgumentException (Locale.GetText (
173 "TraceListener " + name + " was not in the collection"));
176 public void Remove (TraceListener listener)
178 listeners.Remove (listener);
181 public void RemoveAt (int index)
183 listeners.RemoveAt (index);