1 //
2 // System.Web.Services.Description.MessageCollection.cs
3 //
4 // Author:
5 //   Tim Coleman (tim@timcoleman.com)
6 //
7 // Copyright (C) Tim Coleman, 2002
8 //
9 
10 //
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
18 //
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
21 //
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 //
30 
31 namespace System.Web.Services.Description {
32 	public sealed class MessageCollection : ServiceDescriptionBaseCollection {
33 
34 		#region Constructors
35 
MessageCollection(ServiceDescription serviceDescription)36 		internal MessageCollection (ServiceDescription serviceDescription)
37 			: base (serviceDescription)
38 		{
39 		}
40 
41 		#endregion
42 
43 		#region Properties
44 
45 		public Message this [int index] {
46 			get {
47 				if (index < 0 || index > Count)
48 					throw new ArgumentOutOfRangeException ();
49 
50 				return (Message) List [index];
51 			}
52                         set { List [index] = value; }
53 		}
54 
55 		public Message this [string name] {
56 			get {
57 				int index = IndexOf ((Message) Table [name]);
58 				if (index >= 0)
59 					return this [index];
60 				return null;
61 			}
62 		}
63 
64 		#endregion // Properties
65 
66 		#region Methods
67 
Add(Message message)68 		public int Add (Message message)
69 		{
70 			Insert (Count, message);
71 			return (Count - 1);
72 		}
73 
Contains(Message message)74 		public bool Contains (Message message)
75 		{
76 			return List.Contains (message);
77 		}
78 
CopyTo(Message[] array, int index)79 		public void CopyTo (Message[] array, int index)
80 		{
81 			List.CopyTo (array, index);
82 		}
83 
GetKey(object value)84 		protected override string GetKey (object value)
85 		{
86 			if (!(value is Message))
87 				throw new InvalidCastException ();
88 
89 			return ((Message) value).Name;
90 		}
91 
IndexOf(Message message)92 		public int IndexOf (Message message)
93 		{
94 			return List.IndexOf (message);
95 		}
96 
Insert(int index, Message message)97 		public void Insert (int index, Message message)
98 		{
99 			List.Insert (index, message);
100 		}
101 
Remove(Message message)102 		public void Remove (Message message)
103 		{
104 			List.Remove (message);
105 		}
106 
SetParent(object value, object parent)107 		protected override void SetParent (object value, object parent)
108 		{
109 			((Message) value).SetParent ((ServiceDescription) parent);
110 		}
111 
112 		#endregion // Methods
113 	}
114 }
115