当两个方法具有相同名称但参数不同时,如何在VB.Net中实现接口

时间:2010-03-03 15:53:54

标签: vb.net interface implementation

我是一名C#程序员,但我必须使用一些VB.Net代码,我遇到了一种情况,我在一个名称相同但方法参数不同的接口上有两种方法。当我尝试在类中实现此接口时,VB.Net要求在方法签名后明确声明“Implements MethodName”。由于两个方法名称相同,这使编译器感到困惑。有办法解决这类问题吗?我怀疑这一定是常见的事。有什么想法吗?

N.B。这更像是程序员没有验证有问题的界面没有从他下面改变的情况。

2 个答案:

答案 0 :(得分:9)

这怎么会让编译器感到困惑? 编译器期望为每个方法签名找到一个实现,并通过签名区分实现。

如果签名相同/不可区分(在大多数情况下,这意味着参数的顺序是相同的类型),您将得到与接口相关的设计时错误,并说这两种方法不能超载彼此相同,因为他们有相同的签名。

因此,无论如何,编译器不应该混淆。 如果您需要进一步的帮助,请附上代码示例 - 这些内容相对容易解决。

提示:编写实现时,只要记下“实现MyInterface”并按Enter键,Visual Studio就会创建实现的“骨架”代码,这样就可以节省编写方法签名并将它们关联起来到界面。

具有两个名称相同且每个工作良好的方法的示例代码:

Interface MyInterface
    Sub MySub(ByVal arg0 As DateTime)
    Sub MySub(ByVal arg0 As ULong)
End Interface

Class MyImplementation
    Implements MyInterface

    Public Sub MySub(ByVal arg0 As Date) Implements MyInterface.MySub
        ...
    End Sub

    Public Sub MySub(ByVal arg0 As ULong) Implements MyInterface.MySub
        ...
    End Sub
End Class

答案 1 :(得分:1)

您可以将该方法设为私有,并为其指定其他名称。

喜欢:

 Private Sub SaveImpl(ByVal someEntity As IEntity) Implements IRepository.Save

这将向外看:someRepository.Save