Все мои объекты данных реализуют интерфейс IFillable
Public Interface IFillable
Sub Fill(ByVal Datareader As Data.IDataReader)
End Interface
В самих объектах вы обычно видите что-то вроде
Public Class Supplier
Implements IFillable
Public Sub New()
End Sub
Public Sub New(ByVal SupplierID As Guid, ByVal CompanyID As Guid, ByVal Description As String)
Me._SupplierID = SupplierID
Me._CompanyID = CompanyID
Me._Description = Description
End Sub
Public Property SupplierID As Guid
Public Property CompanyID As Guid
Public Property Description As String
Public Sub Fill(ByVal Datareader As System.Data.IDataReader) Implements IFillable.Fill
If Not Datareader.IsClosed Then
Me._SupplierID = Datareader.GetGuid(Datareader.GetOrdinal("SupplierID"))
Me._CompanyID = Datareader.GetGuid(Datareader.GetOrdinal("CompanyID"))
Me._Description = Datareader.GetString(Datareader.GetOrdinal("Description"))
End If
End Sub
End Class
Теперь вот немного хитрости. Учитывая, что все мои имена свойств ВСЕГДА совпадают с именами столбцов моей базы данных, я хочу использовать отражение, генерировать метод fill во время компиляции и выводить типы и имена столбцов для устройства чтения данных. .
Я предполагаю, что мне нужно будет структурировать эту функциональность как своего рода плагин инструмента / против? То, что я ищу, - это руководство о том, как лучше всего это сделать.
PS: Кстати: очевидно, я мог бы легко сделать это, используя отражение во время выполнения, но я не хочу брать на себя удар по производительности (хотя теоретически, если бы я мог как-то кэшировать значения (статический класс?), Это могло бы быть не так уж плохо) .