Bonjour,


J'ai une méthode qui demande 3 paramètres :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
iSession.Find(query as String, values() as Object, types() as NHibernate.Type.IType)
De cette manière, cela fonctionne sans problème :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
myArrayList = iSession.Find("Select from ExWorksCls e where e.ExWorksDesc = :Texte and e.ExWorksActif = :Actif", New Object() {txt, False}, New NHibernate.Type.IType() {NHibernateUtil.String, NHibernateUtil.Boolean})
J'aimerai bien "construire" les 2 derniers paramètres cad :

New Object() {txt, False}

et

New NHibernate.Type.IType() {NHibernateUtil.String, NHibernateUtil.Boolean}

Voilà comment je fais :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
Dim myArr As Array = Array.CreateInstance(GetType(Object), 2)
myArr.SetValue(txt, 0)
myArr.SetValue(True, 1)
 
Dim myArr2 As Array = Array.CreateInstance(GetType(NHibernate.Type.IType), 2)
myArr2.SetValue(NHibernateUtil.String, 0)
myArr2.SetValue(NHibernateUtil.Boolean, 1)
Jusque là tout va bien.

Par contre, si je remplace New Object() {txt, False} par myArr

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
myArrayList = iSession.Find("Select from ExWorksCls e where e.ExWorksDesc = :Texte and e.ExWorksActif = :Actif", myArr, New NHibernate.Type.IType() {NHibernateUtil.String, NHibernateUtil.Boolean})
J'ai une erreur de compilation :

Error 2 Overload resolution failed because no accessible 'Find' can be called without a narrowing conversion:
'Public Function Find(query As String, values() As Object, types() As NHibernate.Type.IType) As System.Collections.IList': Argument matching parameter 'values' narrows from 'System.Array' to '1-dimensional array of Object'.
'Public Function Find(query As String, value As Object, type As NHibernate.Type.IType) As System.Collections.IList': Argument matching parameter 'type' narrows from '1-dimensional array of NHibernate.Type.IType' to 'NHibernate.Type.IType'.


Où est l'erreur ?

Merci d'avance.

Gridin