伪造IDBSet在VB.Net代码转换问题

时间:2012-12-04 14:58:01

标签: entity-framework-4 mocking c#-to-vb.net

我有一个小问题,将一些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抱怨以下错误:私有函数GetEnumerator ...和私有函数GetEnumerator ...不能相互重载,因为它们只有返回类型不同。两者都需要实现IDBSet。

有关如何正确转换此代码的任何想法?

1 个答案:

答案 0 :(得分: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