Je viens de parvenir à quelque chose qui fonctionne ! Mais je n'ai encore testé qu'avec des IIdentifiable(Of Byte). Je testerai avec des Short et des Integer dès que je serai arriver à la partie où c'est necessaire.
Voici donc le code de la fonction :
Et le code de l'appel :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Protected Shared Function CreateParameter(Of T, U As PROMO_DTO.IIdentifiable(Of T))(name As String, value As IEnumerable(Of U), prefix As String) As SqlParameter Dim param As New SqlParameter Dim dt As New DataTable() dt.Columns.Add(prefix & "_ID", GetType(T)) dt.PrimaryKey = {dt.Columns(prefix & "_ID")} For Each d As U In value Dim dr As DataRow = dt.NewRow dr.Item(prefix & "_ID") = d.Id dt.Rows.Add(dr) Next param.Direction = ParameterDirection.Input param.ParameterName = name param.SqlDbType = SqlDbType.Structured param.SqlValue = dt Return param End Function
Où Promo.Days est de type List(Of Day) et Day implémente IIdentifiable(Of Byte).Code:cmd.Parameters.Add(CreateParameter(Of Byte, PROMO_DTO.IIdentifiable(Of Byte))("@LIST_DAY", promo.Days, "DAY"))
Par contre, je ne pige pas encore pourquoi je dois lui spécifier les types à utiliser mais je me suis souvenu que Rudy Lavocara (ou qqch du genre, j'écorche tjs son nom :aie:) faisait la même chose avec ses fonctions GetSingleDTO et GetDTOList. Du coup j'ai fait pareil pour tester et ça a marché :mrgreen:.