Για να είμαι πιο συγκεκριμένος κολλάω φτιάχνοντας αυτο..... το προηγούμενο παράδειγμα ειναι ανούσιο....
Public Function ReadCollection(ByVal CollectionName As String, ByVal CollectionItemsType As Type, Optional ByVal Relation As CollectionType = CollectionType.OneToMany) As ArrayList
Dim command As SqlCommand
Dim detail_ds As New DataSet
ReadCollection = New ArrayList
If Relation = CollectionType.OneToMany Then
command = New SqlCommand("SELECT tdetail.* FROM " & Me.GetType.Name & " AS tmaster JOIN " _
& CollectionName & " AS tdetail ON tmaster.RID=tdetail." & Me.GetType.Name & "RID ")
Else
command = New SqlCommand("SELECT tdetail.* FROM " & Me.GetType.Name & " AS tmaster " & _
"INNER JOIN " & CollectionName & " AS trelation ON tmaster.RID=trelation." & Me.GetType.Name & "RID " & _
"INNER JOIN " & CollectionItemsType.Name & " AS tdetail ON " & CollectionItemsType.Name & "RID=tdetail.RID")
End If
cn.Open()
command.Connection = cn
da.SelectCommand = command
da.Fill(detail_ds)
cn.Close()
Dim collection_item As New Object
collection_item =
'ΕΔΩ ΤΙ ΠΡΕΠΕΙ ΝΑ ΚΑΝΩ , Ο σκοπός είναι το collection_item να γίνει τυπου ότι φέρει η CollectionItemsType.
Dim properties As System.Reflection.PropertyInfo() = CollectionItemsType.GetType.GetProperties()
For Each row As Data.DataRow In detail_ds.Tables(0).Rows
For Each p As System.Reflection.PropertyInfo In properties
If p.PropertyType.ToString() <> "System.Collections.ArrayList" Then _
p.SetValue(CollectionItemsType, row.Item(p.Name), Nothing)
Next p
ReadCollection.Add(CollectionItemsType)
Next row
End Function