我有一个类 SomeClass,它可以从它的构造函数中的数据行中填充自己。此类实现 IInterface。但是,当我执行下面的代码时:
Dim fpQuery As IEnumerable(Of IInterface) = _
From dr As DataRow In DataLayer.SomeMethodToGetADataTable.AsEnumerable _
Select New SomeClass(dr)
我得到错误
Unable to cast object of type
'System.Data.EnumerableRowCollection`1[Classes.SomeClass]'
to type
'System.Collections.Generic.IEnumerable`1[Interfaces.IInterface]'
我可能应该补充一点,以下代码可以正常工作。
Dim fpQuery As IEnumerable(Of SomeClass) = _
From dr As DataRow In DataLayer.SomeMethodToGetADataTable.AsEnumerable _
Select New SomeClass(dr)
和简单的演员一样
Dim myInterface As IInterface = New SomeClass(myDataRow)
有任何想法吗?
编辑:乔恩·斯基特(Jon Skeet)明白了。我使用了以下代码,它运行良好。
Dim fpQuery2 As IEnumerable(Of IInterface) = fpQuery.Cast(Of IInterface)