I've started work on the .net 2.0 portion of the datamapper. I'll be posting my code/patch as soon as I'm able.
-Chad On 1/20/06, Michael Schall <[EMAIL PROTECTED]> wrote: > I would agree. I want generic support. These should help you get by > till then... > > Public Function Load(Of T As New)( _ > ByVal queryName As String, _ > ByVal parameters As IDictionary(Of String, Object)) As T > > Dim mapper As SqlMapper = DatabaseManager.Instance() > Dim rv As T > > rv = DirectCast(mapper.QueryForObject(queryName, > DirectCast(parameters, Object)) > > Return rv > > End Function > > Public Function Enumerate(Of T As New)( _ > ByVal queryName As String, _ > ByVal parameters As IDictionary(Of String, Object)) As IEnumerable(Of T) > > Dim mapper As SqlMapper = DatabaseManager.Instance() > > Dim collector As TypedEnumerateCollector(Of T) = New > TypedEnumerateCollector(Of T) > > mapper.QueryWithRowDelegate(queryName, parameters, New > SqlMapper.RowDelegate(AddressOf collector.Collect)) > > Return collector.Collected() > > End Function > > Private Class TypedEnumerateCollector(Of T) > > Private _list As IList(Of T) > > Public Sub New() > _list = New List(Of T) > End Sub > > Public Sub Collect(ByVal rowObject As Object, ByVal parameterObject > As Object, ByVal junkList As IList) > _list.Add(DirectCast(rowObject, T)) > End Sub > > Public Function Collected() As IEnumerable(Of T) > Return _list > End Function > > End Class > > Public Function Map(Of Tk, Tv As New)( _ > ByVal queryName As String, _ > ByVal parameters As IDictionary(Of String, Object), _ > ByVal keySel As KeySelector(Of Tk, Tv)) As IDictionary(Of Tk, Tv) > > Dim mapper As SqlMapper = DatabaseManager.Instance() > Dim collector As TypedMapCollector(Of Tk, Tv) = New > TypedMapCollector(Of Tk, Tv)(keySel) > > mapper.QueryWithRowDelegate(queryName, parameters, New > SqlMapper.RowDelegate(AddressOf collector.Collect)) > > Return collector.Collected() > > End Function > > Public Delegate Function KeySelector(Of Tk, Tv)(ByVal v As Tv) As Tk > > Private Class TypedMapCollector(Of Tk, Tv) > > Private _map As IDictionary(Of Tk, Tv) > Private _keySelector As KeySelector(Of Tk, Tv) > > Public Sub New(ByVal keySel As KeySelector(Of Tk, Tv)) > _map = New Dictionary(Of Tk, Tv) > _keySelector = keySel > End Sub > > Public Sub Collect(ByVal rowObject As Object, ByVal parameterObject > As Object, ByVal junkList As IList) > Dim v As Tv = DirectCast(rowObject, Tv) > Dim k As Tk = _keySelector(v) > _map.Add(k, v) > End Sub > > Public Function Collected() As IDictionary(Of Tk, Tv) > Return _map > End Function > > End Class >

