Index: trunk/ab5.0/ablib/src/Classes/System/Collections/ObjectModel/Collection.ab
===================================================================
--- trunk/ab5.0/ablib/src/Classes/System/Collections/ObjectModel/Collection.ab	(revision 617)
+++ trunk/ab5.0/ablib/src/Classes/System/Collections/ObjectModel/Collection.ab	(revision 619)
@@ -6,11 +6,14 @@
 
 Class Collection<T>
-	Implements System.Collections.Generic.IList<T>
+	Implements Generic.IList<T>
+	list As Generic.IList<T>
 
 Public
 	'Collection クラスの新しいインスタンスを初期化します。 
-	Sub Collection (  )
+	Sub Collection ()
+		This.list = New Generic.List<T>
 	End Sub
-	Sub Collection ( list As System.Collections.Generic.IList<T> )
+	Sub Collection ( list As Generic.IList<T> )
+		This.list = list
 	End Sub
 
@@ -18,15 +21,19 @@
 	'Collection に実際に格納されている要素の数を取得します。
 	Override Function Count () As Long
+		Return This.list.Count()
 	End Function
 
 	'Item 指定したインデックスにある要素を取得または設定します。 
 	Sub Operator[] ( index As Long, item As T )
+		This.SetItem(index,item)
 	End Sub
 	Function Operator[] ( index As Long ) As T
+		Return This.list.Item(index)
 	End Function
 
 Protected
 	'Collection をラップする IList ラッパーを取得します。 
-	Function Items (  ) As System.Collections.Generic.IList<T>
+	Function Items () As Generic.IList<T>
+		Return This
 	End Function
 
@@ -34,8 +41,10 @@
 	'Collection の末尾にオブジェクトを追加します。 
 	Override Sub Add ( item As T )
+		This.list.Add(item)
 	End Sub
 
 	'Collection からすべての要素を削除します。 
 	Override Sub Clear ()
+		This.ClearItems()
 	End Sub
 
@@ -48,38 +57,57 @@
 
 	'Collection を反復処理する列挙子を返します。 
-	Override Function GetEnumerator () As IEnumerator<T>
+	Override Function GetEnumerator () As Generic.IEnumerator<T>
+		Return This.Items().GetEnumerator()
 	End Function
 
 	'指定したオブジェクトを検索し、Collection 全体内で最初に見つかった位置の 0 から始まるインデックスを返します。 
 	Override Function IndexOf ( item As T ) As Long
+		Return This.list.IndexOf(item)
 	End Function
 
 	'Collection 内の指定したインデックスの位置に要素を挿入します。 
 	Override Sub Insert ( index As Long, item As T )
+		This.InsertItem(index,item)
 	End Sub
+
+	'IList が読み取り専用かどうかを示す値を取得します。
+	Override Function IsReadOnly () As Boolean
+		Return False
+	End Function
 
 	'Collection 内で最初に見つかった特定のオブジェクトを削除します。 
 	Override Function Remove ( item As T ) As Boolean
+		Return This.RemoveItem(This.IndexOf(item))
 	End Function
 
 	'Collection の指定したインデックスにある要素を削除します。 
 	Override Sub RemoveAt ( index As Long )
+		This.RemoveItem(index)
 	End Sub
 
 	'現在の Object を表す String を返します。 (Object から継承されます。) 
 	Override Function ToString () As String
+		Dim string = New Text.StringBuilder
+		Dim i As Long
+		For i = 0 To ELM(This.list.Count())
+			string.Append(This.list.Item[i]).Append(Ex"\r\n")
+		Next
+		Return string.ToString
 	End Function
 
 Protected
-'Collection からすべての要素を削除します。 
+	'Collection からすべての要素を削除します。 
 	Virtual Sub ClearItems ( )
+		This.list.Clear()
 	End Sub
 
 	'Collection 内の指定したインデックスの位置に要素を挿入します。 
 	Virtual Sub InsertItem ( index As Long, item As T )
+		This.list.Insert(index,item)
 	End Sub
 
 	'Collection の指定したインデックスにある要素を削除します。 
-	Virtual Function RemoveItem ( item As T ) As Boolean
+	Virtual Function RemoveItem ( index As Long ) As Boolean
+		This.list.RemoveAt(index)
 	End Function
 	
@@ -87,4 +115,5 @@
 	'指定したインデックス位置にある要素を置き換えます。 
 	Virtual Sub SetItem ( index As Long, item As T )
+		This.list.Item(index,item)
 	End Sub
 
Index: trunk/ab5.0/ablib/src/Classes/System/Collections/ObjectModel/ReadOnlyCollection.ab
===================================================================
--- trunk/ab5.0/ablib/src/Classes/System/Collections/ObjectModel/ReadOnlyCollection.ab	(revision 619)
+++ trunk/ab5.0/ablib/src/Classes/System/Collections/ObjectModel/ReadOnlyCollection.ab	(revision 619)
@@ -0,0 +1,102 @@
+
+Namespace System
+Namespace Collections
+Namespace ObjectModel
+
+
+Class ReadOnlyCollection<T>
+	Implements Generic.IList<T>
+	list As Generic.IList<T>
+
+Public
+	'Collection クラスの新しいインスタンスを初期化します。 
+	Sub ReadOnlyCollection ()
+		This.list = New Generic.List<T>
+	End Sub
+	Sub ReadOnlyCollection ( list As Generic.IList<T> )
+		This.list = list
+	End Sub
+
+Public
+	'Collection に実際に格納されている要素の数を取得します。
+	Override Function Count () As Long
+		Return This.list.Count()
+	End Function
+
+	'Item 指定したインデックスにある要素を取得します。 
+	Sub Operator[] ( index As Long, item As T )
+		Throw New NotSupportedException
+	End Sub
+	Function Operator[] ( index As Long ) As T
+		Return This.list.Item(index)
+	End Function
+
+Protected
+	'Collection をラップする IList ラッパーを取得します。 
+	Function Items () As Generic.IList<T>
+		Return list
+	End Function
+
+Public
+	'Collection の末尾にオブジェクトを追加します。 
+	Override Sub Add ( item As T )
+		Throw New NotSupportedException
+	End Sub
+
+	'Collection からすべての要素を削除します。 
+	Override Sub Clear ()
+		Throw New NotSupportedException
+	End Sub
+
+	'ある要素が Collection 内に存在するかどうかを判断します。 
+/*	Function Contains ( item As T ) As Boolean
+	End Function*/
+
+	'Collection 全体を互換性のある 1 次元の Array にコピーします。コピー操作は、コピー先の配列の指定したインデックスから始まります。 
+	/*CopyTo*/
+
+	'Collection を反復処理する列挙子を返します。 
+	Override Function GetEnumerator () As Generic.IEnumerator<T>
+		Return This.list.GetEnumerator()
+	End Function
+
+	'指定したオブジェクトを検索し、Collection 全体内で最初に見つかった位置の 0 から始まるインデックスを返します。 
+	Override Function IndexOf ( item As T ) As Long
+		Return This.list.IndexOf(item)
+	End Function
+
+	'Collection 内の指定したインデックスの位置に要素を挿入します。 
+	Override Sub Insert ( index As Long, item As T )
+		Throw New NotSupportedException
+	End Sub
+
+	'IList が読み取り専用かどうかを示す値を取得します。
+	Override Function IsReadOnly () As Boolean
+		Return True
+	End Function
+
+	'Collection 内で最初に見つかった特定のオブジェクトを削除します。 
+	Override Function Remove ( item As T ) As Boolean
+		Throw New NotSupportedException
+	End Function
+
+	'Collection の指定したインデックスにある要素を削除します。 
+	Override Sub RemoveAt ( index As Long )
+		Throw New NotSupportedException
+	End Sub
+
+	'現在の Object を表す String を返します。 (Object から継承されます。) 
+	Override Function ToString () As String
+		Dim string = New Text.StringBuilder
+		Dim i As Long
+		For i = 0 To ELM(This.list.Count())
+			string.Append(This.list.Item[i]).Append(Ex"\r\n")
+		Next
+		Return string.ToString
+	End Function
+
+End Class
+	
+End Namespace
+End Namespace
+End Namespace
