【问题标题】:Fake IDBSet in VB.Net code conversion issueVB.Net代码转换问题中的假IDBSet
【发布时间】:2012-12-04 14:58:00
【问题描述】:

我在将一些 C# 代码转换为 VB.NET 时遇到了一个小问题。我正在使用这个在线博客:http://refactorthis.wordpress.com/2011/05/31/mock-faking-dbcontext-in-entity-framework-4-1-with-a-generic-repository/

在内存IDBSet中创建fake部分,代码如下:

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 所必需的。

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

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

    • 这就是我最终所做的。只是想确保这样做是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多