Stubbed all of these
[mono.git] / mcs / class / System.Management / System.Management / ManagementNamedValueCollection.cs
1 //
2 // System.Management.ManagementNamedValueCollection
3 //
4 // Authors:
5 //      Gonzalo Paniagua Javier (gonzalo@ximian.com)
6 //
7 // (C) 2003 Ximian, Inc (http://www.ximian.com)
8 //
9
10 using System;
11 using System.Collections.Specialized;
12 using System.Runtime.Serialization;
13
14 namespace System.Management
15 {
16         public class ManagementNamedValueCollection : NameObjectCollectionBase
17         {
18                 public ManagementNamedValueCollection ()
19                 {
20                 }
21
22                 public ManagementNamedValueCollection (SerializationInfo info, StreamingContext context)
23                         : base (info, context)
24                 {
25                 }
26
27                 public void Add (string name, object value)
28                 {
29                         if (BaseGet (name) != null)
30                                 BaseRemove (name);
31
32                         BaseAdd (name, value);
33                 }
34
35                 public ManagementNamedValueCollection Clone ()
36                 {
37                         ManagementNamedValueCollection result = new ManagementNamedValueCollection ();
38                         foreach (string key in Keys) {
39                                 object value = BaseGet (key);
40                                 if (value == null) {
41                                         result.Add (key, value);
42                                         continue;
43                                 }
44
45                                 if (value is ICloneable) {
46                                         result.Add (key, ((ICloneable) value).Clone ());
47                                 } else {
48                                         result.Add (key, value);
49                                 }
50                         }
51
52                         return result;
53                 }
54
55                 public void Remove (string name)
56                 {
57                         BaseRemove (name);
58                 }
59
60                 public void RemoveAll ()
61                 {
62                         BaseClear ();
63                 }
64
65                 public object this [string name] {
66                         get { return BaseGet (name); }
67                 }
68         }
69 }
70