В настоящее время я использую SqlDataReader
, загруженный простым запросом базы данных «Выбрать».Каждая строка представляет объект домена, поэтому я раздуваю каждый объект следующим образом:
Dim loadedItems As New List(Of Item)
Dim dr As SqlDataReader = GetItemsDataReader()
While dr.Read()
Dim item As Item = GetItemFromData(dr)
loadedItems.Add(item)
End While
Метод GetItemFromData
, который я написал, выглядит примерно так:
Private Function GetItemFromData(dr As SqlDataReader) As Item
Dim loadedItem As New Item()
loadedItem.ID = dr("ID")
loadedItem.Name = dr("Name")
'etc., etc.'
Return loadedItem
End Function
В некоторых случаях ядолжны читать данные из DataRow
вместо SqlDataReader
.Но код будет точно таким же!Когда я смотрю на мой GetItemFromData
метод, я хочу принять более общий тип объекта в параметре dr
, чтобы я мог трактовать DataReader
так же, как DataRow
, поскольку я буду писать точныйтот же код внутри метода, если я написал тот, который должен был использовать DataRow
.Есть ли способ сделать это?