##DIRECTIVE START_TAG=<% END_TAG=%> ##DIRECTIVE MAP_TYPE String=String ##DIRECTIVE MAP_TYPE Integer=Integer ##DIRECTIVE MAP_TYPE Long=Integer ##DIRECTIVE MAP_TYPE Double=Double ##DIRECTIVE MAP_TYPE Date=Date ##DIRECTIVE MAP_TYPE Boolean=Boolean ##DIRECTIVE MAP_TYPE Variant=Object ##DIRECTIVE MAP_TYPE Object=Object ##DIRECTIVE MAP_TYPE Decimal=Decimal ' 'ClassGenerator Template Version 01.00.00 ' Public Class <%CLASS_NAME%>sCollection Implements IEnumerable Protected List As New ArrayList() Protected KeyList As New ArrayList() Protected mCurrentIndex As Integer = -1 Public Function GetEnumerator() As System.Collections.IEnumerator Implements System.Collections.IEnumerable.GetEnumerator Return New CollectionEnumerator(Me) End Function Default Public ReadOnly Property Item(ByVal index As Integer) As <%CLASS_NAME%> Get Dim obj As <%CLASS_NAME%> = Nothing If index > -1 AndAlso index < List.Count Then obj = CType(List.Item(index), <%CLASS_NAME%>) mCurrentIndex = index Else mCurrentIndex = -1 End If Return obj End Get End Property Default Public ReadOnly Property Item(ByVal Key As String) As <%CLASS_NAME%> Get Dim i As Integer = 0 Dim Found As Boolean = False Dim Obj As <%CLASS_NAME%> = Nothing i = IndexOf(Key) If i > -1 Then Obj = CType(List(i), <%CLASS_NAME%>) End If mCurrentIndex = i Return Obj End Get End Property Public Function Exists(ByVal Key As String) As Boolean Return (IndexOf(Key) > -1) End Function Public Function IndexOf(ByVal Key As String) As Integer Dim i As Integer = 0 Dim Found As Boolean = False For i = 0 To KeyList.Count - 1 If Key = CType(KeyList(i), String) Then Found = True Exit For End If Next If Not Found Then i = -1 mCurrentIndex = i Return i End Function Public ReadOnly Property Count() As Integer Get Return List.Count End Get End Property Public Function Add(ByVal Obj As <%CLASS_NAME%>) As <%CLASS_NAME%> List.Add(Obj) 'KeyList.Add(Key) Return Obj End Function Public Function Add(ByVal Obj As <%CLASS_NAME%>, ByVal Key As String) As <%CLASS_NAME%> List.Add(Obj) KeyList.Add(Key) Return Obj End Function Public Sub Remove(ByVal index As Integer) If index > -1 Then Try List.RemoveAt(index) Catch End Try Try KeyList.RemoveAt(index) Catch End Try End If End Sub Public Sub Remove(ByVal key As String) Dim index As Integer = IndexOf(key) Try Remove(index) Catch End Try End Sub Public Sub Clear() List.Clear() KeyList.Clear() End Sub Public ReadOnly Property CurrentIndex() As Integer Get Return mCurrentIndex End Get End Property Public ReadOnly Property KeyAt(ByVal index As Integer) As String Get Dim key As String = "" Try If index < KeyList.Count Then key = CType(KeyList(index), String) End If Catch End Try Return key End Get End Property #Region " CollectionEnumerator" Private Class CollectionEnumerator Implements IEnumerator ' a reference to the parent object Dim Parent As <%CLASS_NAME%>sCollection ' the text line just read Dim CurrentPos As Integer Sub New(ByVal obj As <%CLASS_NAME%>sCollection) Me.Parent = obj CurrentPos = -1 End Sub Public Function MoveNext() As Boolean _ Implements IEnumerator.MoveNext If CurrentPos < Parent.Count - 1 Then CurrentPos += 1 Return True Else Return False End If End Function ReadOnly Property Current() As Object Implements IEnumerator.Current Get If CurrentPos < 0 OrElse CurrentPos = Parent.Count Then Throw New InvalidOperationException() End If Return Parent.Item(CurrentPos) End Get End Property Public Sub Reset() Implements IEnumerator.Reset ' this method isn't called and can be empty CurrentPos = -1 End Sub End Class #End Region End Class