J'ai une classe SomeClass, qui peut se peupler à partir d'un datarow dans son constructeur. Cette classe implémente IInterface. Cependant, quand j'exécute le code ci-dessous:Exception lors de la conversion d'une classe concrète en interface dans une requête LINQ
Dim fpQuery As IEnumerable(Of IInterface) = _
From dr As DataRow In DataLayer.SomeMethodToGetADataTable.AsEnumerable _
Select New SomeClass(dr)
Je reçois l'erreur
Unable to cast object of type
'System.Data.EnumerableRowCollection`1[Classes.SomeClass]'
to type
'System.Collections.Generic.IEnumerable`1[Interfaces.IInterface]'
Je devrais probablement ajouter que le code suivant fonctionne très bien.
Dim fpQuery As IEnumerable(Of SomeClass) = _
From dr As DataRow In DataLayer.SomeMethodToGetADataTable.AsEnumerable _
Select New SomeClass(dr)
Comme le fait simple cast
Dim myInterface As IInterface = New SomeClass(myDataRow)
Toutes les idées?
ÉDIT: Jon Skeet a trouvé son compte. J'ai utilisé le code suivant et cela a fonctionné parfaitement.
Dim fpQuery2 As IEnumerable(Of IInterface) = fpQuery.Cast(Of IInterface)
Merci beaucoup - c'était exactement ce que je cherchais. –