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 抱怨以下错误: Private Function GetEnumerator ... 和 Private Function GetEnumerator ... 不能相互重载,因为它们仅在返回类型上有所不同。两者都是实现 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 回答