2012-12-04 40 views
0

我有一个小问题将一些C#代码转换为VB.NET。我与这个网上博客的工作:http://refactorthis.wordpress.com/2011/05/31/mock-faking-dbcontext-in-entity-framework-4-1-with-a-generic-repository/VB.Net代码转换问题假IDBSet

在大约在内存中创建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

由于它们都是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 
+0

这就是我最终做的。只是想确保这样做是正确的。 –