0

一部のC#コードをVB.NETに変換する際に小さな問題が発生しています。私はこのオンラインブログで作業しています:http://refactorthis.wordpress.com/2011/05/31/mock-faking-dbcontext-in-entity-framework-4-1-with-a-generic-repository/

メモリIDBSetに偽物を作成する部分では、次のコードがあります。

System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
    return _data.GetEnumerator();
}

IEnumerator<T> IEnumerable<T>.GetEnumerator()
{
    return _data.GetEnumerator();
}

コードトランスレータを使用すると、次のようになります。

Private Function GetEnumerator() As IEnumerator Implements System.Collections.IEnumerable.GetEnumerator
    Return _data.GetEnumerator()
End Function

Private Function GetEnumerator() As IEnumerator(Of T) Implements IEnumerable(Of T).GetEnumerator
    Return _data.GetEnumerator()
End Function

正しい翻訳のように見えますが、DB.Netは次のエラーに対応しています。PrivateFunctionGetEnumerator...とPrivateFunctionGetEnumerator ...は、戻り値のタイプのみが異なるため、相互にオーバーロードできません。IDBSetを実装するには、両方が必要です。

このコードを正しく変換する方法について何かアイデアはありますか?

4

1 に答える 1

1

どちらもなので、どちらPrivateか一方の名前を変更するだけです。重要な部分は、それぞれのインターフェイスメソッドを実装することです。これはうまくいくでしょう:

Private Function IEnumerator_GetEnumerator() As IEnumerator Implements System.Collections.IEnumerable.GetEnumerator
    Return _data.GetEnumerator()
End Function

Private Function GetEnumerator() As IEnumerator(Of T) Implements IEnumerable(Of T).GetEnumerator
    Return _data.GetEnumerator()
End Function
于 2012-12-04T18:09:32.567 に答える