在部分类中实现接口

时间:2014-11-08 17:25:50

标签: vb.net class interface partial-classes

我需要所有TableAdapters来实现自定义界面。问题是接口定义的某些成员驻留在DataSet的设计器文件中,我不想(并且不应该)更改,因为该代码将自动重新生成。出于同样的原因,我无法将这些成员重新定位到我的代码文件中。我的出路是什么?

1 个答案:

答案 0 :(得分:3)

当您实施界面时,您声明的成员不必具有与界面成员相同的名称,并且他们不必公开。让我们说你有这个设计师生成的类:

Partial Public Class SomeClass

    Public Sub FirstMethod()
        Console.WriteLine("FirstMethod")
    End Sub

    Public Sub SecondMethod()
        Console.WriteLine("SecondMethod")
    End Sub

End Class

并且您希望它实现此接口:

Public Interface ISomeInterface

    Sub FirstMethod()

    Sub ThirdMethod()

End Interface

请注意,该接口有一个名为FirstMethod的方法,但SomeClass已有一个名为FirstMethod的方法。您可以添加自己的部分类来实现这样的接口:

Partial Public Class SomeClass
    Implements ISomeInterface

    Private Sub FirstMethodInternal() Implements ISomeInterface.FirstMethod
        Me.FirstMethod()
    End Sub

    Public Sub ThirdMethod() Implements ISomeInterface.ThirdMethod
        Console.WriteLine("ThirdMethod")
    End Sub

End Class

实现ISomeInterface.FirstMethod的方法未命名为FirstMethod,因此它不会与使用该名称的现有方法发生冲突,而且它也是Private,因此无法从在外部使用SomeClass类型的引用。使用ISomeInterface类型的引用是另一回事。如果你使用这样的代码:

Dim sc As ISomeInterface = New SomeClass

sc.FirstMethod()
sc.ThirdMethod()

您将发现调用FirstMethodInternal对象的SomeClass方法,然后调用同一对象的FirstMethod方法。尝试运行该代码并在FirstMethodFirstMethodInternal方法上放置断点以向您自己证明。