// Tim Coleman (tim@timcoleman.com)\r
//\r
// (C) BLiNK Software Ltd. http://www.blinksoftware.co.uk\r
-// Copyright (C) Tim Coleman, 2003\r
+// Copyright (C) Tim Coleman, 2003-2004\r
//\r
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
\r
-#if NET_1_2\r
+#if NET_2_0\r
\r
using System.Collections;\r
+using System.Reflection;\r
\r
namespace System.Data.ObjectSpaces\r
{\r
[MonoTODO]\r
public class ObjectList : ICollection, IEnumerable, IList\r
{\r
- \r
- [MonoTODO]\r
- public ObjectList () : this (typeof (ArrayList), null) {}\r
+ #region Fields\r
+\r
+ IList list;\r
+\r
+ #endregion // Fields\r
+\r
+ #region Constructors\r
+\r
+ public ObjectList () \r
+ : this (typeof (ArrayList), null) \r
+ {\r
+ }\r
\r
- [MonoTODO]\r
public ObjectList (Type type, object[] parameters)\r
{\r
- if (type == null || !(type is IList))\r
+ if (type == null)\r
+ throw new ObjectException ();\r
+\r
+ bool isIList = false;\r
+ foreach (Type t in type.GetInterfaces ())\r
+ if (t.Equals (typeof (IList))) {\r
+ isIList = true;\r
+ break;\r
+ }\r
+\r
+ if (!isIList)\r
throw new ObjectException ();\r
+\r
+ Type[] types = Type.EmptyTypes;\r
+ if (parameters != null)\r
+ types = Type.GetTypeArray (parameters);\r
+\r
+ ConstructorInfo ci = type.GetConstructor (types);\r
+ list = (IList) ci.Invoke (parameters);\r
}\r
\r
- [MonoTODO]\r
+ #endregion // Constructors\r
+\r
+ #region Properties\r
+\r
public int Count {\r
- get { return 0; }\r
+ get { return InnerList.Count; }\r
} \r
\r
- [MonoTODO]\r
- bool ICollection.IsSynchronized {\r
- get { throw new NotImplementedException (); }\r
+ bool ICollection.IsSynchronized { \r
+ get { return InnerList.IsSynchronized; }\r
}\r
\r
- [MonoTODO]\r
object ICollection.SyncRoot {\r
- get { throw new NotImplementedException (); }\r
+ get { return InnerList.SyncRoot; }\r
}\r
\r
- [MonoTODO]\r
public IList InnerList {\r
- get { return null; }\r
+ get { return list; }\r
} \r
\r
- [MonoTODO]\r
public bool IsFixedSize {\r
- get { return false; }\r
+ get { return InnerList.IsFixedSize; }\r
} \r
\r
- [MonoTODO]\r
public bool IsReadOnly {\r
- get { return false; }\r
+ get { return InnerList.IsReadOnly; }\r
}\r
\r
- [MonoTODO]\r
- public object this[int index] {\r
- get { throw new NotImplementedException (); } \r
- set { throw new NotImplementedException (); } \r
+ public object this [int index] {\r
+ get { return InnerList [index]; }\r
+ set { InnerList [index] = value; }\r
}\r
+\r
+ #endregion // Properties\r
+\r
+ #region Methods\r
\r
- [MonoTODO]\r
public int Add (object value)\r
{\r
- return 0; \r
+ return InnerList.Add (value);\r
}\r
\r
- [MonoTODO]\r
- public void Clear () {}\r
+ public void Clear () \r
+ {\r
+ InnerList.Clear ();\r
+ }\r
\r
- [MonoTODO]\r
public bool Contains (object value)\r
{\r
- return false;\r
+ return InnerList.Contains (value);\r
}\r
\r
- [MonoTODO]\r
- public void CopyTo (Array array, int index) {}\r
- \r
+ public void CopyTo (Array array, int index) \r
+ {\r
+ InnerList.CopyTo (array, index);\r
+ }\r
\r
- [MonoTODO]\r
public IEnumerator GetEnumerator ()\r
{\r
- return null;\r
+ return InnerList.GetEnumerator (); \r
}\r
\r
- [MonoTODO]\r
public int IndexOf (object value)\r
{\r
- return 0; \r
+ return InnerList.IndexOf (value);\r
}\r
\r
- [MonoTODO]\r
- public void Insert (int index, object value) {}\r
+ public void Insert (int index, object value) \r
+ {\r
+ InnerList.Insert (index, value);\r
+ }\r
\r
- [MonoTODO]\r
- public void Remove (object value) {}\r
+ public void Remove (object value) \r
+ {\r
+ InnerList.Remove (value);\r
+ }\r
\r
- [MonoTODO]\r
- public void RemoveAt (int index) {}\r
+ public void RemoveAt (int index) \r
+ {\r
+ InnerList.RemoveAt (index);\r
+ }\r
+\r
+ #endregion // Methods\r
}\r
}\r
\r