我正在使用Rob Connery优秀的MVC店面作为我的新MVC Web App的松散基础,但我无法将LazyList代码移植到VB.NET(不要问)。
似乎VB不允许仅使用不同的返回类型指定GetEnumerator函数两次。有谁知道我怎么解决这个问题?
由于
Private Function GetEnumerator() As IEnumerator(Of T) Implements IEnumerable(Of T).GetEnumerator
Return Inner.GetEnumerator()
End Function
Public Function GetEnumerator() As IEnumerator Implements IList(Of T).GetEnumerator
Return DirectCast(Inner, IEnumerable).GetEnumerator()
End Function
答案 0 :(得分:2)
VB.NET允许您指定函数的名称,该名称与您正在实现的函数不同。
Public Function GetEnumerator() As IEnumerator(Of T) _
Implements IEnumerable(Of T).GetEnumerator
Return Inner.GetEnumerator()
End Function
Public Function GetListEnumerator() As IEnumerator _
Implements IList(Of T).GetEnumerator
Return DirectCast(Inner, IEnumerable).GetEnumerator()
End Function
答案 1 :(得分:0)
抱歉,我不知道如何使用VB解决这个问题,但.NET的一个优点是,在运行时,您可以使用使用不同语言构建的程序集。因此,您可以创建一个包含LazyList类的非常简单的C#程序集,并仅引用该程序集。这是.NET支持的跨语言重用的全部要点 - 它可以帮助您免于重新发明轮子!