2002-04-11 Patrik Torstensson
[mono.git] / mcs / class / System.Web / System.Web / HttpModuleCollection.cs
1 // \r
2 // System.Web.HttpModuleCollection\r
3 //\r
4 // Author:\r
5 //   Patrik Torstensson (Patrik.Torstensson@labs2.com)\r
6 //\r
7 using System;\r
8 using System.Collections.Specialized;\r
9 \r
10 namespace System.Web {\r
11    public sealed class HttpModuleCollection : NameObjectCollectionBase {\r
12       private IHttpModule [] _Modules;\r
13       private string [] _Keys;\r
14 \r
15       internal HttpModuleCollection() : base() {\r
16       }\r
17 \r
18       internal void AddModule(string key, IHttpModule m) {\r
19          _Modules = null;\r
20          _Keys = null;\r
21 \r
22          BaseAdd(key, m);\r
23       }\r
24 \r
25       public void CopyTo(Array dest, int index) {\r
26          if (null == _Modules) {\r
27             _Modules = new IHttpModule[Count];\r
28 \r
29             for (int i = 0; i != Count; i++) {\r
30                _Modules[i] = Get(i);\r
31             }\r
32          }\r
33 \r
34          if (null != _Modules) {\r
35             _Modules.CopyTo(dest, index);\r
36          }\r
37       }\r
38 \r
39       public IHttpModule Get(string key) {\r
40          return (IHttpModule) BaseGet(key);\r
41       }\r
42       \r
43       public IHttpModule Get(int index) {\r
44          return (IHttpModule) BaseGet(index);\r
45       }\r
46 \r
47       public string GetKey(int index) {\r
48          return GetKey(index);\r
49       }\r
50       \r
51       public string [] AllKeys {\r
52          get {\r
53             if (null == _Keys) {\r
54                _Keys = BaseGetAllKeys();\r
55             }\r
56 \r
57             return _Keys;\r
58          }\r
59       }   \r
60 \r
61       public IHttpModule this [string key] {\r
62          get {\r
63             return Get(key);\r
64          }\r
65       }\r
66 \r
67       public IHttpModule this [int index] {\r
68          get {\r
69             return Get(index);\r
70          }\r
71       }\r
72    }\r
73 }\r