クラス 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)